CF 1438 题解
A Specific Tastes of Andre
考虑一种非常简单的构造 :\(a_i=1\). 不难发现满足条件.
B Valerii Against Everyone
结论: 符合条件当且仅当有两个一样的元素.
证明:
充分性显然, 下证必要性.
若不存在两个一样的元素, 则由于无法进位, 故没有办法得到两个区间和在相同二进制位上为 \(1\), 证毕.
C Engineer Artem
可以选择是否 \(+1\) 相当于可以控制奇偶性. 于是只要相邻格黑白染色后让黑格中是奇数, 白格中是偶数就一定不会有相邻格子中的数一样.
D Powerful Ksenia
一个重要的观察是, 在操作前后, 整个序列的异或和不会改变.
如果序列长度是奇数, 那么只需要如下构造:
就可以让最后一个数是原序列异或和, 前面的数每两个之间相等.
然后把每两个相等的位置和最后一个数操作一下, 就可以让每个数都是原序列异或和.
如果是偶数:
首先, 最后局面所有数异或和一定是 \(0\) , 那么原序列异或和必然为 \(0\) , 否则无解.
否则把前 \(n-1\) 个数跑一遍如上构造, 此时前 \(n-1\) 个数都一样, 由于整个数列异或和为 \(0\), 那么此时最后一个元素和前面也一样, 操作结束.
E Yurii Can Do Everything
\(O(n^2)\) 的暴力是容易的. 考虑优化:
我们首先钦定 \(a_l\) 必须小于 \(a_r\) , 然后反过来再跑一遍.
有什么好处呢? 这样 \(sum_{r-1}-sum_l=a_l\oplus a_r<2^k.\) 其中 \(k= \lceil \log_2 a_l\rceil\).
这样, 对于每一个 \(a_r\) 和 \(k\), 只会被枚举 \(3\) 次, 因为如果有更多次的话, 中间会超过 \(2^k\), 因此复杂度 \(O(n \log n)\).
F Olha and Igor
如果纯随机去操作, 有很大概率随机到根节点的两个子节点.
这意味着, 可以先操作一些次, 找到出现频次最大的两个答案, 然后枚举根节点的编号询问 \(n-2\) 次就可以了.
注意刷新输出流.