【MX-S5-T3】IMAWANOKIWA (Construction ver.) 题解
结论:
- 如果序列包含奇数个
2 。- 若有
0 ,则必然能合出1 。(A) - 否则只能合出
2 。(B)
- 若有
- 否则
- 全
0 合出0 。(C) - 若只存在一个
202 且其他位置都是1 ,则只能合出2 。(D) - 否则能合出
1 。(E)
- 全
接下来给出证明。
C 是显然的。若不满足 C 即存在非
我们证明 DE。
充分性:
若是这个结构,因为
(2,1)\to2,(2,0)\to1 ,所以只有中间一个0 可以消去2 ,那么必然留下一个2 无法消去,最后还是2 。
必要性:
若不是这个结构
- 若
2 的数量大于2 个,我们有如下策略:
把所有非
2 的数合并,最后形如2(0/1)2(0/1)2 ,不难发现合并顺序并不影响结果。
- 若没有
0 ,则用2 吃掉所有的1 ,再两两合并成若干个1 ,此时不会剩下其他东西,直接合并成1 即可。- 否则找到所有形如
21212 的极长连续段,它的前面或者后面必然有一个0 ,用2 吃掉所有的1 ,再两两合并剩下1 或2 。
- 如果周围有
20 或02 。
- 如果不是
20(1/2)02 ,那么如果是1 就和0 合并成1 再用2 吃掉抵消影响。注意此操作不会影响2 的奇偶性。- 否则形如
20(1/2)02 ,注意到因为2 是偶数,所以中间的21212 段中2 也是偶数,所以实际上只有20102 一种情况,按如下方法合并即可:20102\to1102\to111\to 1 。- 否则偶数个
2 合出的是1 直接结束。那么现在只剩下形如
20202 的串且2 的个数为偶数,注意前后也有可能有0 。
如果前后任何一个位置有
0 ,那么0 的数量大于等于2 的数量,全部合并即可。否则我们先随便找到一个
20 合并把2 的数量变成奇数,然后找到所有20202 的子串,注意这里不是形如,有如下方法可以合并:
那么我们除了最后一次合并用法
2 其他都用法1 即可合并出1 ,因为每次可以减少两个2 。
否则形如
(0/1)2(0/1)2(0/1) 。如果
0 大于等于2 个,那么和2 合并即可。否则必然形如
(0/1)212(0/1) ,用2 吃掉中间的1 然后两个2 合并即可。至此所有情况讨论完。
所以此结论得证。
证 AB。
充分性:延用偶数变成奇数后的策略。
必要性:假如没有
0 ,那么1 不会对2 的数量产生影响,只能两个2 对碰,最后还是会剩下一个2 。至此所有情况讨论完。
所以此结论得证。
实现的时候先判掉所有答案不是
发现一定存在操作序列满足只操作过前
- 如果第一个数是
0 ,那就一直操作第二个数,最后剩一个和0 合并,无论剩什么都是1 。 - 否则一直操作第一个数直到第二个数是
0 ,然后一直操作第三个数。最后剩下三个数形如?0? 。 - 如果不是
202 ,那么最多只有一个2 ,和0 合并了就可以了。 - 否则因为不是
111202111 ,那么不是21111 的那边- 是右边,合并的过程中
0 右边一定存在过1 且后面还有2 ,那可以用它把0 吃掉,最后22 合并。而这个过程先缩前面,后面一定可以操作点3 ,而前面没有0 只能是有22 ,那拿哪个2 吃1 都是一样的。 - 是左边,若
0 左边是1 那再左边肯定是2 ,直接10 合并然后22 合并。否则20 前面极长1 前面总是0/2 , 直接12 合并20 合并然后0/2,2 合并。
- 是右边,合并的过程中
也就是说对于所有情况,其最小的第一次操作一定小于等于
继续往下思考直接分讨寻找字典序最小的构造不如利用这个结论字典序贪心,即贪心的把每一位能往小选就往小选。我们发现如果操作一个位置不影响答案,就可以操作。于是维护序列