https://yukicoder.me/problems/no/580

  • 区間スケジューリング問題の、スロットが複数あるバージョンである。
  • 基本的な解き方は同じだが、popするスロットは、「部屋iの(出)時刻がdata[i]の入時刻より早い中で最大」のものである。
    • このスロットを検索するには、multisetを2分探索する以上に効率のよい方法はなさそうである。
      • 勿論普通の区間スケジューリングではこの集合は1個しか無いため定数時間である。
    • 私は最初、最小のものがdata[i]の入時刻より早ければpopする実装にして盛大に間違いました…
  • スロットを線形探索しないため、計算量をnからlognに落とすことができ、合わせてO(m(logm+logn))となる(実際にはn<mだと思われるのでO(mlogm))。

  • https://yukicoder.me/submissions/211209 (現状の最短時間とのこと)

  • n<=10000, m<=100000なるHardバージョンを作ろうと思いましたが必要ない気もするのでやめておきます。。