CF1969E Unique Array
从整体的角度想你就祭了,得从前缀的角度思考。
思考让一个前缀合法的最小操作次数,有一个很显然的结论是,我们每次将一个元素修改为序列中没有出现过的元素一定不劣。
假设我现在加入一个 \(a_i\),那么出现不合法的情况只能是 \([j, i]\) 这个子区间不合法,令 \(j\) 为最大值,那么此时我们一定是将 \(a_i\) 修改,因为这样可以让每个左端点在 \([1, i]\) 中的往后面拓展都是合法的(优于在 \([1, i - 1]\) 中连边)。这也是贪心的思想,只有到了不得不改的时候我才会选择改,改了之后要使以后尽量不要改。

浙公网安备 33010602011771号