2 条题解

  • 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;
    }
    
    • 0
      @ 2025-4-9 20:15:55

      #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
      标签
      递交数
      149
      已通过
      70
      上传者