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>

全部评论

相关推荐

头顶尖尖的程序员:我是26届的不太懂,25届不应该是找的正式工作吗?为什么还在找实习?大四还实习的话是为了能转正的的岗位吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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