公式

C - Solutions 解説 by kort0n


問題 \(P\) は区間スケジューリング問題と呼ばれる問題であり、高橋君のプログラムで表現される貪欲アルゴリズムにより最適解を求められることが知られています。

\(M < 0\) のとき

前述の通り、高橋君のプログラムは最適解を出力しますから、 このようなことは起こりません。

\(M = N\) のとき

青木君のプログラムが出力する値は必ず \(1\) 以上となりますから、このようなことは起こりません。

\(M = N - 1\) かつ \(N \geq 2\) のとき

青木君のプログラムが出力する値は必ず \(1\) 以上となりますから、 \(M = N - 1\) となるには、高橋君のプログラムが出力する値が \(N\) となり、青木君のプログラムが出力する値が \(1\) となることが必要です。しかし、高橋君のプログラムが出力する値が \(N\) となるような入力は全ての区間が互いに交わりませんから、青木君のプログラムが出力する値も \(N\) となります。 \(N \geq 2\) の元では、これは解にはなりません。

\(M = 0\) のとき

全ての区間を互いに交わらないように配置すれば、条件を満たします。

それ以外のとき 則ち、\(1 \leq M \leq N - 2\) のとき

\(1\) つ大きな区間を取り、その中に \(M + 1\) 個の区間を、それら同士が互いに交わらないように配置します。残りの \(N - M - 2\) 個の区間を他の区間と交わらないように配置すれば、条件を満たします。

投稿日時:
最終更新: