CQOI2018 异或序列 【莫队+xor前缀和】
CQOI2018 异或序列
题面见链接。。。(复制过来markdown。。。)
题解:
先来总结一下:一般题目中:询问你几个区间 [l,r],并问区间内……答案的数目,而且涉及到前缀和(如:sum 或 xor)
这样一般来说都往莫队那儿想想,先看看复杂度能不能过 n*sqrt(n)。
本题因为xor 具有前缀和性质。还需记录一个数组b[i],表示 当前莫队的区间l,r中异或和为 i 的子序列数量。
当我们需要加入a[x]这个数时,对答案的贡献为b[a[x]^k],因为要是a[x]对答案有贡献,应该a[x] xor m==k --> m=k^a[x]
去掉这个数时同理。
这样莫队就完美A题了。
fighting fighting fighting!!!