Official

B - Modifications Editorial by evima


まず、\(a\) が生成可能か判定する方法を考えます。

操作過程を逆転させ、各変化が区間を任意の値に変えるようにして、この変化が区間を「覆う」ということにします。

すると、以下の貪欲法が成立します。

  • \([l_i,r_i]\) の中の覆われていないすべての要素が同じ値を持つなら、それらを覆う。

選べる区間がなくなったら、操作過程は終了します。明らかに、\(a\) が生成可能であることはすべての要素が覆われることと同値です。

これで、区間 DP で問題を解けます。遷移のため、不適なものを数えることにします。そこでは、いくつかの要素が覆われずに終わります。

覆われる極大な区間が \([p_1,q_1]\dots [p_k,q_k]\) であるとすると、これらは \(k\) 個の独立した部分問題を生じます。あとは、「選べる区間がなくなっている」ことを保証する必要があります。

DP の状態として、最も右にある覆われていない要素と異なる値を持つ覆われていない要素のうち最も右にあるものを保持します。これで適合性の判定に十分です。

時間計算量は \(O(n^4)\) です。定数倍の良い \(O(n^5)\) 解法も通るかもしれません。

posted:
last update: