Xorto
当两个区间异或和相同时,则他们的异或值为零,map记录左边区间异或和出现的次数,枚举右边区间异或和,计数即可;复杂度O(n^2)
Code:
#include<bits/stdc++.h>
using namespace std;
int a[1010];
int sum[1010];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i],sum[i] = sum[i-1]^a[i];
long long ans=0;
map<int ,int> mp;
for(int i=2;i<=n;i++){
for(int k=1;k<i;k++) mp[sum[i-1]^sum[k-1]]++;
for(int j=i;j<=n;j++) ans += mp[sum[j]^sum[i-1]];
}
cout<<ans<<endl;
return 0;
}