const int maxn=1e5+5;
struct Trie{
int val[maxn*31],tree[maxn*31][2],L,root;
int newnode(){
mem(tree[L],-1);
return L++;
}
void init(){
L=0;
root=newnode();
}
void update(int x,int key){
int now=root;
for(int i=31;i>=0;i--){
int p=(x>>i)&1;
if(tree[now][p]==-1) tree[now][p]=newnode();
now=tree[now][p];
val[now]+=key;
}
}
int query(int x){
int res=0;
int now=root;
for(int i=31;i>=0;i--){
int p=(x>>i)&1;
if(val[tree[now][!p]]){
now=tree[now][!p];
res|=(1<<i);
}else{
now=tree[now][p];
}
}
return res;
}
}trie;
int main(){
trie.init();
}
01字典树模板
Trie树实现与应用
最新推荐文章于 2023-10-07 21:46:57 发布
本文介绍了一种使用Trie树的数据结构实现方法,并详细解释了如何通过此结构进行数据更新与查询操作。该实现利用位运算高效地处理整数集合,支持查找当前集合中与给定整数异或值最大的元素。

287

被折叠的 条评论
为什么被折叠?



