AcWing 143. 最大异或对
作者:互联网
在给定的N个整数选出两个进行xor(异或)运算,得到的结果最大是多少?
#include<bits/stdc++.h> using namespace std; const int N=4e6+10; int ch[N][2],n,a,ans,tot=1; void insert() { int u=1; for(int i=30;i>=0;i--) { int v=(a>>i)&1; if(!ch[u][v])ch[u][v]=++tot; u=ch[u][v]; } } void query() { int u=1,tmp=0; for(int i=30;i>=0;i--) { int v=(a>>i)&1?0:1; if(ch[u][v])tmp+=(1<<i),u=ch[u][v]; else u=ch[u][!v]; } ans=max(ans,tmp); } int main() { cin>>n; for(int i=1;i<=n;i++) { scanf("%d",&a); query(); insert(); } cout<<ans<<endl; return 0; }
标签:tmp,ch,143,int,void,tot,异或,AcWing 来源: https://www.cnblogs.com/1314cyd/p/14252316.html