<span style="font-size:18px;">#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn=1100000;
typedef long long ll;
const ll maxm=1<<21;
ll sum[maxn],l,r,res,cnt[maxm],k,ans[maxn];
struct node
{
ll L,R,id;
}q[maxn];
bool cmp(node x,node y)
{
if(x.L/400==y.L/400) return x.R<y.R;
return x.L<y.L;
}
void inc(ll s)
{
res+=cnt[s^k];
cnt[s]++;
}
void del(ll s)
{
cnt[s]--;
res-=cnt[s^k];
}
int main()
{
ll n,m,i;
scanf("%I64d%I64d%I64d",&n,&m,&k);
for(i=1;i<=n;i++)
{
scanf("%I64d",&sum[i]);
sum[i]^=sum[i-1];
}
for(i=1;i<=m;i++)
{
scanf("%I64d%I64d",&q[i].L,&q[i].R);
q[i].id=i;
q[i].L--;
}
sort(q+1,q+m+1,cmp);
l=0,r=0,cnt[0]=1,res=0;
for(i=1;i<=m;i++)
{
while(r<q[i].R) inc(sum[++r]);
while(r>q[i].R) del(sum[r--]);
while(l<q[i].L) del(sum[l++]);
while(l>q[i].L) inc(sum[--l]);
ans[q[i].id]=res;
}
for(i=1;i<=m;i++) printf("%I64d\n",ans[i]);
return 0;
}
</span>
codeforces 617E (莫队)
最新推荐文章于 2021-10-14 13:38:53 发布