社区讨论
存疑
P10471最大异或对 The XOR Largest Pair参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @m6uf918e
- 此快照首次捕获于
- 2025/02/07 15:05 去年
- 此快照最后确认于
- 2025/11/04 09:49 4 个月前
为什么开了 O2 RE #5,关了O2 WA #5?
为什么???
CPP#include<bits/stdc++.h>
using namespace std;
#define k 31
int n,cnt;
unsigned ans;
int t[100010][2];
int b[1000010][33];
inline void biuld(int d,int x){
int p=0;
bool *c=new bool[50];
if(x<0)x=-x,c[k]=1;
for(int i=0;i<=k;i++){
bool y=(x&(1<<i))>>i;
c[i]=y;
}
for(int i=k;i>=0;i--){
b[d][i]=c[i];
if(!t[p][b[d][i]])t[p][b[d][i]]=++cnt;
p=t[p][b[d][i]];
}
delete []c;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
int a;
cin>>a;
biuld(i,a);
}
for(int i=1;i<=n;i++){
int root=0;
unsigned sum=0;
for(int j=k;j>=0;j--){
if(!b[i][j]){
if(t[root][1])sum+=(1<<j),root=t[root][1];
else root=t[root][0];
}else{
if(t[root][0])sum+=(1<<j),root=t[root][0];
else root=t[root][1];
}
}
ans=max(ans,sum);
}
cout<<ans;
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...