P4462 [CQOI2018]异或序列
思路
把序列求前缀异或和一下
问题转变成了[l,r]中有多少个数对(x,y)的异或和为k
然后莫队就好了
代码
#include
#include
#include
#include
using namespace std;
int n,m,k,a[100100],belong[100100],sz,num,L,R,ans[100100],barrel[2001000],sum=0;
struct Query{
int l,r,id;
bool operator < (const Query &b){
return (belong[l]==belong[b.l])?rQ[i].l)
moveL(-1);
while(RQ[i].r)
moveR(-1);
ans[Q[i].id]=sum;
}
for(int i=1;i<=m;i++)
printf("%d\n",ans[i]);
return 0;
}