Codeforces Round #367 (Div. 2)-Vasiliy's Multiset-最大异或和-trie
来源:互联网 发布:kali linux安装输入法 编辑:程序博客网 时间:2024/06/09 16:01
参考。。http://blog.csdn.net/viphong/article/details/52167649
注意要先插入0。。。特判一下0不能删除
#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <algorithm>#include <iostream>#include <queue>#include <map>#include <vector>using namespace std;#define inf 2147483647const int maxnode = 200005*32;struct trie{ int ch[maxnode][2]; int val[maxnode]; int sz; void init() { sz=1; val[0]=0;//可不需要 memset(ch[0],0,sizeof(ch[0])); } void insert(int s ) { int u=0,n=31,i; for (i=0; i<n; i++) { int c=s&(1<<(30-i)); c=!!c; if (!ch[u][c]) { memset(ch[sz],0,sizeof(ch[sz])); val[sz]=1; ch[u][c]=sz++; } else val[ch[u][c]]++; u=ch[u][c]; } // val[u]=num; } void del(int s ) { int u=0,n=31,i; for (i=0; i<n; i++) { int c=s&(1<<(30-i)); c=!!c; val[ch[u][c]]--; u=ch[u][c]; } // val[u]=num; } int query_if(int s) { int ret=0; int u=0,n=31,i; int nex; for (i=0; i<n; i++) { int c=s&(1<<(30-i)); c=!!c; if (ch[u][c^1]>0&&val[ch[u][c^1]]>0) c^=1; ret|=c<<(30-i); u=ch[u][c]; } return ret; }};trie tp;int main(){// while(scanf("%d",&n)!=EOF) int n; cin>>n; tp.init(); tp.insert(0); char tmp[5]; int x; for (int i=1; i<=n; i++) { scanf("%s%d",tmp,&x); if (tmp[0]=='+') { if (x) tp.insert(x); } else if (tmp[0]=='-') { if (x) tp.del(x); } else printf("%d\n",tp.query_if(x)^x); } return 0;}
0 0
- 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 (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 (01trie树)
- HDU-4825 Xor Sum &&Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset (Trie树)
- Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset 二进制树、Trie
- 【 Codeforces Round #367 (Div. 2) D】 Vasiliy's Multiset (Trie 按数位建字典树)
- Codeforces Round #367 (Div. 2) D Vasiliy's Multiset(01Trie)
- Codeforces Round #367 (Div. 2) Vasiliy's Multiset(字典树)
- Codeforces Round #367 D. Vasiliy's Multiset
- 【Codeforces Round 367 (Div 2) D】【字典树典型题】Vasiliy's Multiset
- Codeforces Round #367 (Div. 2) D Vasiliy's Multiset(字典树)
- Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset (tire 树)
- 字典树(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(01字典树模板)
- 正向代理与反向代理的区别
- iOS图像处理(5)填充模式
- hdu 4283 You Are the One(区间DP)
- 在CentOS系统上格式化逻辑分区的方法
- [leetcode] 96. Unique Binary Search Trees
- Codeforces Round #367 (Div. 2)-Vasiliy's Multiset-最大异或和-trie
- Codeforces Round #367 (Div. 2)-C - Hard problem-DP
- c语言栈实现括号匹配
- js 性能优化总结
- [leetcode] 382. Linked List Random Node 解题报告
- [leetcode] 309. Best Time to Buy and Sell Stock with Cooldown
- OI算法的时空复杂度及算法模板
- Linux写时拷贝技术(copy-on-write)
- JAVA中I/O的基础知识