Official

A - Colorful Intervals Editorial by maspy


\(d = \max_j(R_j - L_j + 1)\) とします.つまり,入力区間の要素数の最大値です.

条件を満たす \(A\) について \(\max(A_1, A_2, \ldots, A_N)\) としてありうる最小値を \(\mathrm{ANS}\) と書くことにします.


[1] \(\mathrm{ANS}\)\(d\) 以上であること

\(d = R_j - L_j + 1\) であるような \(j\) をとります.

\(d\) 個の整数 \(A_{L_j}, A_{L_j+1}, \ldots, A_{R_j}\) がすべて相異なることが必要です.さらに \(A_i\) が正整数であることから,\(A\) は相異なる正整数 \(d\) 個を含む必要があります.したがって条件を満たすどのような \(A\) についても

\[\max(A_1,A_2,\ldots,A_N)\geq d\]

が成り立ちます.このことから,\(\mathrm{ANS}\geq d\) が分かります.


[2] \(\mathrm{ANS}\)\(d\) 以下であること

正整数列 \(A\)

\[ A_i = ((i-1)\bmod d) + 1\qquad (1\leq i\leq N) \]

によって定めます.連続する \(d\) 個以下の整数 \(i\) について,\(i\bmod d\) は相異なるため,この正整数列は問題の条件をすべて満たします.

任意の \(i\) について \(A_i\leq (d-1)+1=d\) なので,この \(A\)

\[\max(A_1,A_2,\ldots,A_N) \leq d\]

を満たしています.したがって \(\mathrm{ANS}\leq d\) が成り立ちます.


[3] まとめ

以上により \(\mathrm{ANS}=d\) であることが示されました.また,対応する正整数列 \(A\) の例は [2] で解説されています.

[1] のように未知の量 \(\mathrm{ANS}\) について,いくつ以上であるという情報を得ることを \(\mathrm{ANS}\)下から評価するといいます.同様に [2] は \(\mathrm{ANS}\)上から評価しているといえます.

最適化問題(ある量としてありうる最大値や最小値を求める問題)では,答を上から評価する,または下から評価するというのは基本的な考え方です.サンプルやランダムケースを観察しながら一方向の評価の方法を考えていくと,それが解法につながるということは珍しくありません.

posted:
last update: