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!!!

posted on 2018-11-08 15:06  Frank-King  阅读(158)  评论(0编辑  收藏  举报