AGC022 E Median Replace

发布时间 2023-07-09 15:32:59作者: PYD1

考虑操作一共可以根据 \(0,1\) 个数分成四类:

  • \((3,0)\),这个一定很优,因此我们可以先把序列消成连续的 \(0\) 最多有 \(2\) 个。
  • \((0,3)\),这个一定没用,完全可以不消留到最后。
  • \((1,2)\)\((2,1)\),感受一下,我们发现这两类其实都是等价于消掉一组 \(01\),也就是说,如果我们手头有 \(01/10\),不论前后是什么,我们都可以消掉这个东西,肯定不差。

后面就是套路了。根据上面的分析,我们当前没有消掉的东西一定可以表示成前面若干个 \(1\)(可能为 \(0\))接上最多 \(2\)\(0\)。又发现 \(1\) 最多只需要保留 \(3\) 个,总状态数 \(p=12\)

套个 dp 就过了,复杂度 \(O(pn)\)