求助佬大
查看原帖
求助佬大
906970
Jerry_Money楼主2024/8/7 14:09

为啥明明数据是到10^5,却得开6e7???(6e7是看的讨论区)

#include<bits/stdc++.h>
using namespace std;
int n;
int a[6000086];
int e[6000086][2];
int tot;
int maxx;
int now,ans;
bool t;
void add(int x){
	now=0;
	for(int i=31;i>=0;i--){
		t=(x>>i)&1;
		if(!e[now][t])e[now][t]=++tot;
		now=e[now][t];
	}
	return;
}
int ask(int x){
	ans=0,now=0;
	for(int i=31;i>=0;i--){
		t=(x>>i)&1;
		if(!e[now][t^1])now=e[now][t];
		else{
			now=e[now][t^1];
			ans=ans^(1<<i);
		}
	}
	//cout<<ans<<endl;
	return ans;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		add(a[i]);
	}
	for(int i=1;i<=n;i++){
		maxx=max(maxx,ask(a[i]));
	}
	cout<<maxx;
	return 0;
}
2024/8/7 14:09
加载中...