http://codeforces.com/contest/617/problem/E
:https://blog.csdn.net/keyboarderqq/article/details/55807154
题意:
给出一系列数,对每个查询区间,计算有多少个子区间异或为k。
思路:
可以先预处理异或前缀,一个区间[L,R]的异或值=a[R]^a[L-1];
其中,a为异或前缀和数组;
如果当前区间是[A,B],加一个右端点B+1,那么这个 B+1 的贡献就是[A,B]区间内有多少个a[x] = a[B+1]^k
那么我们可以每次记录cnt[a[x]]即cnt[a[B+1]^k],并记录cnt[a[b+1]]++,同理左区间。
那么我们就可以使用莫队算法。
#include #include #include #include #include #include