loj 10050 连续子段最大异或和

#include<bits/stdc++.h>
#define rep(i,x,y) for(register int i=x;i<=y;i++) using namespace std;
const int N=; int ch[N][],a[N];
int tot,n,ans; inline void insert(int x){
int u=;
for(int k=;k>=;k--){
int c=(x>>k)&;
if(!ch[u][c]) ch[u][c]=++tot;
u=ch[u][c];
}
}
inline int query(int x){
int u=,v=,ans=;
for(int k=;k>=;k--){
int c=(x>>k)&,o=c?:;
if(ch[v][o]) v=ch[v][o],ans=(ans<<)|;
else v=ch[v][c],ans<<=;
u=ch[u][c];
}return ans;
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&a[i]),insert(a[i]);
for(int i=;i<=n;i++)
ans=max(ans,query(a[i]));
printf("%d\n",ans);return ;
}
上一篇:vs2013update4 vs-mda-remote cordova真机测试ios


下一篇:java项目——数据结构实验报告