交换律
a^b=b^a
结合律
(a^b)^c=a^(b^c)
0律
a^a=0
a^0=a
自反性
a^b^b=a
用于元素交换
swap(a,b)等价于:
a=a^b
b=a^b
a=a^b
一道简单异或题
题目描述
![](https://img-blog.csdnimg.cn/img_convert/6a0801b658e76fffc8d31e8cc6d69173.png)
解题思路
前缀和sum[i]=sum[i-1]^a[i]
某段和sum[i,j]=sum[1,j]^sum[1,i-1]
代码实现
#include<bits/stdc++.h>
using namespace std;
int main( )
{
// freopen("input.txt","r",stdin);
int N;
cin>>N;
vector<int> sum(N+1,0);
vector<int> w(N+1,0);
for(int i=1;i<=N;++i){
cin>>w[i];
sum[i]=sum[i-1]^w[i];
}
int ans=0;
for(int i=1;i<=N;++i){
for(int j=i;j<=N;++j){
ans=max(ans,sum[j]^sum[i-1]);
}
}
cout<<ans<<endl;
return 0;
}