N - 整地 image

  • 考えたこと
    • 長さCの区間を動かして、N個の区間のうち重なるものの除去コストの和を最小化したい
    • きちんと証明してないけど、Cの始点は、0か、他の区間の終点+1だと思う
    • 各区間ごとに小さいオーダーでコストが計算できるならOK
    • 重なる区間を探すのが、素朴にやると線形オーダー
    • 二つの数の組みに対して、それぞれの不等式制約を与えて、両方満たすものを列挙したい?
      • 列挙でも遅すぎることがあるか、例えばすべての区間が重なってるケース
    • 始点と終点の(位置, ID, is始点)を混ぜてソート
    • 区間Cを[しゃくとり法]
    • 終点を進めて始点を踏んだらコストを足す
    • 始点を進めて終点を踏んだらコストを減らす
    • どちらを進めるかは「始点を進めて長さC未満にならないか」で判断
    • これで線形オーダーで求まる
  • 公式解説OK

第一回 アルゴリズム実技検定