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字典树
42 1
|
7月前
|
搜索推荐
前缀树Trie
前缀树Trie
|
7月前
|
NoSQL 容器 消息中间件
字典树 (Trie)
字典树 (Trie)
|
7月前
|
存储 C++
leetcode-208:实现 Trie (前缀树/字典树)
leetcode-208:实现 Trie (前缀树/字典树)
55 0
|
存储 Python
字典树(Trie,
字典树(Trie,也称为前缀树或单词查找树)是一种用于存储字符串的树形数据结构。它是一种特殊的多叉树,其中每个节点都包含一个字符和一个指向其子节点的指针数组。字典树的主要作用是用于快速查找字符串和处理字符串的前缀。
64 6
|
搜索推荐
字典树 trie
字典树 trie
58 0
理解前缀树
理解前缀树
65 0
|
存储 机器学习/深度学习 算法
|
存储
前缀树
Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。
80 0
前缀树
|
存储 自然语言处理 算法
字典树详解
字典树,顾名思义,是关于“字典”的一棵树。即:它是对于字典的一种存储方式(所以是一种数据结构而不是算法)。
175 0
字典树详解