1 条题解

  • 0
    @ 2026-4-24 13:05:47
    #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
    上传者