Codeforces Round #732 (Div. 2)
A
处理出哪些位置是加,那些位置是减。
B
各个位置的字符集合是不变的,将各个位置原来的集合减去后来的集合就行了。
C
pos[i]记录:原序列中数字i的不同位置中有几个位置是偶数下标。
再计算排序后数字i的连续位置中有几个位置是偶数下标,即为n0。若成立,有n0=pos[i]
因为再移动前后两位置差为偶数,操作数也一定是偶数。反之亦然。
D
题意即在这两种情况互相转化:
011
<->110
。
那么将相邻两个1几位一组(各个组之间不重叠),那么每次操作后组数不变。
并且所有组数相同的状态都能达到。
因此,记0的个数为m,组数为n,结果就是
$ (mn+m) $
至于落单的1,当成对的1排列好后,单个的1位置是固定的,不需要考虑。
总结
D题这种应当发现其不变量,再用数学解决。
后面还有几题,下次再说。。