Trie(字典树)

简介: 笔记

AcWing 835. Trie字符串统计


#include<iostream>
int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
const int N = 100010, M = 3000000;
int son[M][2], idx, a[N];
void insert(int x){
    int p  =0;
    for(int i = 30;~i;--i){
        int &s = son[p][x >> i & 1];
        if(!s)s = ++idx;
        p = s;
    }
}
int query(int x){
    int p =0;
    int res = 0;
    for(int i = 30;~i;--i){
        int s = x >> i & 1;
        if(son[p][!s]){
            res += 1<<i;
            p = son[p][!s];
        }
        else p = son[p][s];
    }
    return res;
}
int main(){
    int n;cin >> n;
    for(int i  =0;i<n;++i){
        scanf("%d",&a[i]);
        insert(a[i]);
    }
    int ans =0;
    for(int i = 0;i<n;++i){
        ans = max(ans,query(a[i]));
    }
    printf("%d\n",ans);
    return 0;
}
目录
相关文章
|
4月前
|
搜索推荐
前缀树Trie
前缀树Trie
|
4月前
|
NoSQL 容器 消息中间件
字典树 (Trie)
字典树 (Trie)
|
4月前
|
存储 C++
leetcode-208:实现 Trie (前缀树/字典树)
leetcode-208:实现 Trie (前缀树/字典树)
24 0
|
6月前
|
存储 Python
字典树(Trie,
字典树(Trie,也称为前缀树或单词查找树)是一种用于存储字符串的树形数据结构。它是一种特殊的多叉树,其中每个节点都包含一个字符和一个指向其子节点的指针数组。字典树的主要作用是用于快速查找字符串和处理字符串的前缀。
35 6
|
9月前
|
搜索推荐
字典树 trie
字典树 trie
33 0
|
10月前
|
搜索推荐 数据格式
Trie字典树
Trie字典树
59 0
Trie字典树
|
11月前
理解前缀树
理解前缀树
39 0
|
12月前
|
存储 机器学习/深度学习 算法
|
存储
前缀树
Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。
59 0
前缀树
|
Java C++
字典树(前缀树)
字典树:又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。
83 0