Skip to content

字典树 ​

cpp
int tr[N][26],idx,cnt[N];
void insert(string &s){
    int p=0;
    for(int i=0;i<s.size();i++){
        int v=s[i]-'a';
        if(!tr[p][v])tr[p][v]=++idx;
        p=tr[p][v];
    }
    cnt[p]++;
}
bool find(string &s){
    int p=0;
    for(int i=0;i<s.size();i++){
        int v=s[i]-'a';
        if(!tr[p][v])return false;
        p=tr[p][v];
    }
    return cnt[p];
}
  • 使用01trie可以求出一个数和哪些数的异或和最大