01字典树模板
来源:互联网 发布:在淘宝上怎么搜索发票 编辑:程序博客网 时间:2024/05/19 05:39
int ch[32*MAX][2];LL val[32*MAX];int num[32*MAX];int sz;LL b[MAX];void init(){ mem(ch[0]); sz=1;}void inser(LL a){ int u=0; for(int i=32;i>=0;i--){ int c=((a>>i)&1); if(!ch[u][c]){ mem(ch[sz]); val[sz]=0; num[sz]=0; ch[u][c]=sz++; } u=ch[u][c]; num[u]++; } val[u]=a;}void update(LL a,int d){ int u=0; for(int i=32;i>=0;i--){ int c=((a>>i)&1); u=ch[u][c]; num[u]+=d; }}LL query(LL a){ int u=0; for(int i=32;i>=0;i--){ int c=((a>>i)&1); if(ch[u][c^1]&&num[ch[u][c^1]]) u=ch[u][c^1]; else u=ch[u][c]; } return a^val[u];}
const int MAXN = 1E5 + 5;int bits[50];struct Trie{ int data; Trie* child[2]; Trie() { data = 0; memset(child, 0, sizeof(child)); }} *root;void Insert(int num){ Trie* p = root; for (int i = 31; i >= 0; --i) { bool temp = bits[i] & num; if (p->child[temp] == NULL) { p->child[temp] = new Trie; } p = p->child[temp]; } p->data = num;}int Find(int num){ Trie* p = root; for (int i = 31; i >= 0; --i) { bool temp = bits[i] & num; if (p->child[!temp]) { p = p->child[!temp]; } else { p = p->child[temp]; } } return p->data;}void Delete(Trie* p){ for (int i = 0; i <= 1; ++i) { if (p->child[i]) Delete(p->child[i]); } delete p;}int bits[50];for (int i = 0; i < 32; ++i){ bits[i] = 1 << i;}root = new Trie;Delete(root);
#include <unordered_map>unordered_map<int,int> data[30];void update(int v, int c){//v是数,c取1 -1,1为加,-1为删。 for(int i = 0; i < 30; i++)data[i][v>>i] += c;}int query(int x){ int cur = 0; for(int i = 29; i >= 0; i--){ cur ^= (1<<i) ^ ((1<<i)&x); if(data[i][cur>>i] == 0)cur ^= (1<<i); } return cur ^ x;}
int query(int a)//统计>m的个数。{ int u=0; int ans=0; for(int i=22; i>=0; i--) { int c=((a>>i)&1); int cc=((m>>i)&1); if(cc) { if(!ch[u][c^1]) return ans; u=ch[u][c^1]; } else { if(ch[u][c^1]) ans+=num[ch[u][c^1]]; if(!ch[u][c]) return ans; u=ch[u][c]; } } return ans+num[u];}
0 0
- 01字典树模板
- 01字典树模板
- 01字典树+贪心(顺便总结字典树模板)
- 01 字典树模板 求XOR最大值
- 字典树 模板
- 字典树【模板】
- 字典树模板
- 字典树模板
- 字典树模板
- 经典字典树模板
- hdu1247 字典树模板
- 字典树模板
- 字典树模板
- 字典树模板
- 字典树模板
- 字典树 模板
- 1251 字典树 模板
- 数据结构 字典树模板
- Java基础--数组和链表的区别
- 30OS笔记(1)
- RecyclerView 的使用详解(一)
- XML文件解析--xpath技术<一>
- Android自动化之uiautomator(一)
- 01字典树模板
- 推荐!手把手教你使用Git
- 渐变圆形及矩形
- MyBatis学习总结(三)——优化MyBatis配置文件中的配置
- java基础--Set、List和Map的区别
- genymotion的安装和使用
- 【杭电oj2024】C语言合法标识符
- RecyclerView 的使用详解(一)
- php中json_decode()和json_encode()的使用方法