Xorto

Xorto

https://ac.nowcoder.com/acm/problem/14247

链接:https://ac.nowcoder.com/acm/problem/14247
来源:牛客网

题目描述
给定一个长度为的整数数组,问有多少对互不重叠的非空区间,使得两个区间内的数的异或和为,


两个区间异或和为,则分别的异或和相等
为了避免重复,我们对于,查询构成的区间与前所有区间的方案数,并把组成的区间值添加到

```
#include <bits stdc++.h>
#define ri int
#define ll long long
using namespace std;
const int Maxn=1e3;
map<int,int>cnt;
int a[Maxn+5],n;
int main() {
scanf("%d",&n);
for(ri i=1;i<=n;i++)scanf("%d",&a[i]);
ll ans=0;
for(ri i=1;i<=n;i++) {
int sum=0;
for(ri j=i;j<=n;j++) {sum^=a[j];ans+=cnt[sum];}
sum=0;
for(ri j=i;j>=1;j--) {sum^=a[j];++cnt[sum];}
}
printf("%lld\n",ans);
return 0;
}

```</int,int>

全部评论

相关推荐

今天 14:37
门头沟学院 Java
点赞 评论 收藏
分享
仁者伍敌:牛子这些人还会点一个自动回复,boss都不带回复的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务