米奇的甜心屋,神奇女侠迅雷下载,快乐的大脚1在线观看
在给定的N个整数A1,A2……AN中选出两个进行xor运算,得到的结果最大是多少?
第一行一个整数N,第二行N个整数A1~AN。
一个整数表示答案。
3
1 2 3
3
对于100%的数据: N<=\(10^5\), 0<=Ai<\(2^{31}\).
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #define Min(a,b) (a)<(b)?(a):(b) #define Max(a,b) (a)>(b)?(a):(b) #define in(i) (i=read()) using namespace std; int read() { int ans=0,f=1; char i=getchar(); while(i<'0' || i>'9') {if(i=='-') f=-1; i=getchar();} while(i>='0' && i<='9') {ans=(ans<<1)+(ans<<3)+i-'0'; i=getchar();} return ans*f; } int n,m,tot,ans; int trie[4000010][2],cnt[4000010]; void insert(int x) { int p=0; for(int i=31;i>=0;i--) { int c=(x>>i)&1; if(!trie[p][c]) trie[p][c]=++tot; p=trie[p][c]; } } int search(int x) { int p=0,ans=0; for(int i=31;i>=0;i--) { int c=(x>>i)&1,o=c^1; if(trie[p][o]) p=trie[p][o],ans=ans<<1|1; else p=trie[p][c],ans<<=1; } return ans; } int main() { in(n); for(int i=1;i<=n;i++) { int x; in(x); ans=Max(ans,search(x)); insert(x); } cout<<ans<<endl; return 0; }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论