ABC396 Solution E-G
哎哎,E 怎么吃了好几发罚时。爆炸了/ll
E - Min of Restricted Sum
每一位的取值互不影响,所以我们按位考虑。
假设现在在第 \(k\) 位,若 \(z_i\) 的第 \(k\) 位为 \(1\) 则可以看做 \(a_{x_i}\neq a_{y_i}\),否则 \(a_{x_i}= a_{y_i}\)(这里 \(a_i\) 指的是实际上 \(a_i\) 的第 \(k\) 位)。
把相等的限制用并查集缩起来,此时不相等的限制相当于给图染色使得相邻两个点颜色不同。
我们对每个连通块分别考虑,如果染色中出现冲突直接无解,否则选择出现次数较小的颜色将其赋为 \(1\)。
时间复杂度 \(O(n\log V)\)。
F - Rotated Inversions
考虑从 \(k=i-1\) 的答案推出 \(k=i\) 的答案。发现其实就是找出 \(A_i=M-k\) 的数并且将它们赋值为 \(-k\),因为逆序对只依赖于相对大小关系。
考虑把一个最大数变成最小数会发生什么,首先逆序对会减去这个数往后所有小于它的数,然后再加上往前所有大于它修改后的值的数。发现除了等于它的数(即也在这回合修改)外其它的数必定全部选到。直接找出前后有哪些等于其的数即可。
一开始求逆序对使用树状数组即可。时间复杂度 \(O(n\log m)\)。
G - Flip Row or Col
首先肯定是状压。因为最后存在行翻转这个东西不好处理,考虑求出有多少行走 \(c\) 步能到某个状态 \(S\)(即对列操作的状态)。这样答案的贡献就是 \(\min(c,H-c)\) 了。直接 dp 即可。我场上咋不会???