https://codeforces.com/contest/1869/problem/A
研究了好久的样例的逻辑,看不大懂,然后发现
Note that you do not have to minimize k.
If there are multiple solutions, you may output any of them.
说明样例的解法未必具有参考价值
一组数进行异或,以第一条样例为例:
1 2 3 0
01 10 11 00
0^0=0,所以多少个0相互异或都是0
1^1=0,偶数个1相互异或是0
1^0=1,奇数个1是1
每次计算s的值时,其实是先计算每个数位上1的个数,若有奇数个1,则该位上的结果为1,偶数个为0,这是这次推论出的一个结论,不过对于这题来说用不到
这题主要用到的性质是:
- x^x=0
- 0^x=x
所以对于任意一组个数为偶数的序列,如果它是x x x x x x这样的构造,那它最后异或出来的结果肯定是0
对于元素偶数个的序列,直接将从头到尾变成s,这样算出来的新s就肯定是0,再从头到尾变成0,就完成了
对于奇数个元素的序列
我们将前N-1个数变成s,那前N-1个数的新异或值是0,算上最后一个数,假设为a,整体N个元素的新s值为a
这时将倒数后两个数都置为a,则整个序列的s值为0^a^a
=0,从头到尾变成0即可