1 条题解

  • 1
    @ 2021-8-7 20:49:57

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+10;
    int n,ans;
    int trie[N*32][2],tot=1;
    inline void insert(int x){
        int p=1;
        for(int i=30;i>=0;i--){
            int u=(x>>i)&1;
            if(!trie[p][u]) trie[p][u]=++tot;
            p=trie[p][u];
        }
    }
    inline int search(int x){
        int p=1,res=0;
        for(int i=30;i>=0;i--){
            int u=(x>>i)&1;
            if(trie[p][!u]){
                p=trie[p][!u];
                res+=(1<<i);
            }
            else
                p=trie[p][u];
        }
        return res;
    }
    int main(){
        ios::sync_with_stdio(0);
        cin.tie(0);
        cout.tie(0);
        cin>>n;
        while(n--){
            int x;
            cin>>x;
                insert(x);
            ans=max(ans,search(x));
        }
        cout<<ans<<endl;
    }
    
    • 1

    信息

    ID
    54
    时间
    1000ms
    内存
    128MiB
    难度
    4
    标签
    递交数
    145
    已通过
    66
    上传者