1 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N=1e7+10; int len,a[N],ed[N],ch[N][2],dp[N],dep[N]; void ins(int x) { int p=0; for(int i=30;i>=0;i--) { int j=(x>>i)&1; if(!ch[p][j])ch[p][j]=++len,dep[len]=i; p=ch[p][j]; ed[p]++; } } void dfs(int x) { if(!ch[x][0]&&!ch[x][1])return; int l=ch[x][0],r=ch[x][1]; if(!l) { dfs(r); dp[x]=dp[r]; return; } if(!r) { dfs(l); dp[x]=dp[l]; return; } dfs(l),dfs(r); dp[x]=min(max(dp[l]^(1<<dep[x]-1),dp[r]),max(dp[l],dp[r]^(1<<dep[x]-1))); } signed main() { int n;cin>>n; for(int i=1;i<=n;i++)cin>>a[i],ins(a[i]); dfs(0); cout<<dp[0]; return 0; }
- 1
信息
- ID
- 705
- 时间
- 2500ms
- 内存
- 1024MiB
- 难度
- 10
- 标签
- 递交数
- 7
- 已通过
- 2
- 上传者