Codeforces Round #367 (Div. 2) Vasiliy's Multiset 异或字典树带删除模板
来源:互联网 发布:手机养兔子软件 编辑:程序博客网 时间:2024/06/06 10:43
多重集版的异或字典树,拿之前的板子瞎改了改居然能用,看来功能理解得没错。。
莫名wa7,回忆一波代码意义之后感觉没问题啊
读读题发现这个多重集里居然永远有0
。。。
赛中能debug出来还是挺开心的
#include<bits/stdc++.h> //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<stdio.h> #include<algorithm> #include<queue> #include<string.h> #include<iostream> #include<math.h> #include<set> #include<map> #include<vector> #include<iomanip> using namespace std; #define ll long long #define pb push_back #define FOR(a) for(int i=1;i<=a;i++) const int inf=0x3f3f3f3f; const int maxn=2e5+9; const int maxnode=32*maxn; int ch[maxnode][2]; int val[maxnode]; int vis[maxnode];int sz; void init(){memset(ch[0],0,sizeof ch[0]);sz=1;} void insert(int num){ int now=0; for(int i=30;i>=0;i--){ int c=(num>>i)&1; if(!ch[now][c]){ memset(ch[sz],0,sizeof ch[sz]); val[sz]=0; vis[sz]=0;ch[now][c]=sz++; } now=ch[now][c]; vis[now]++;} val[now]=num; } void del(int num){int now=0;for(int i=30;i>=0;i--){int c=(num>>i)&1;now=ch[now][c];vis[now]--;}}int query(int num){ int now=0; for(int i=30;i>=0;i--){ int c=(num>>i)&1; if(ch[now][c^1] && vis[ch[now][c^1]])now=ch[now][c^1]; else if(vis[ch[now][c]])now=ch[now][c]; else{return 0;}} return val[now]; } char op[5];int num;int main(){init();int n;scanf("%d",&n);while(n--){scanf("%s%d",op,&num);if(op[0]=='+')insert(num);else if(op[0]=='-')del(num);else printf("%d\n",max(num,num^query(num)));}}
阅读全文
0 0
- Codeforces Round #367 (Div. 2) Vasiliy's Multiset 异或字典树带删除模板
- Codeforces Round #367 (Div. 2) D——Vasiliy's Multiset(异或字典树)
- Codeforces Round #367 (Div. 2) Vasiliy's Multiset(字典树)
- Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset(字典树模板)
- Codeforces Round #367 (Div. 2) [D] Vasiliy's Multiset(01字典树模板)
- 【Codeforces Round 367 (Div 2) D】【字典树典型题】Vasiliy's Multiset
- Codeforces Round #367 (Div. 2) D Vasiliy's Multiset(字典树)
- 字典树(Codeforces Round #367 (Div. 2) Vasiliy's Multiset,Xor问题 )
- Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset (字典树二进制)
- Codeforces Round #367 (Div. 2) D Vasiliy's Multiset(字典树+贪心)
- Codeforces Round #367 (Div. 2):Vasiliy's Multiset(01字典树)
- 【 Codeforces Round #367 (Div. 2) D】 Vasiliy's Multiset (Trie 按数位建字典树)
- Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset (multiset)
- Codeforces Round #367 (Div. 2)-Vasiliy's Multiset-最大异或和-trie
- Codeforces Round #367 (Div. 2) Vasiliy's Multiset xor trie
- Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset (tire 树)
- Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset (01trie树)
- HDU-4825 Xor Sum &&Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset (Trie树)
- php中array_merge和+对数组操作的区别
- c#基础入门(6)——File、FileStream、StreamReader、StreamWriter详解
- 单一模式
- python3.4 实现java反射功能
- SDUT-oj 分类游戏
- Codeforces Round #367 (Div. 2) Vasiliy's Multiset 异或字典树带删除模板
- 杨辉三角
- Hive的数据类型之基本数据类型
- 浅说深度学习(4):增强学习
- json与xml互转
- LoadLibrary函数详细说明
- git pull 撤销误操作
- SSD详解Default box的解读
- Springboot banner 生成网址