本文主要是介绍01字典树求异或最大值与最小值模板(带删除),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
异或求最小值模板#include <bits/stdc++.h>
using namespace std;
const int maxn=300005;
int n,m;
int a[maxn],b[maxn];
int ch[30*maxn][2];
int val[30*maxn];
int sz;
void insert(int num){ int u=0; for(int i=29;i>=0;i--){ int c=((num>>i)&1);if(!ch[u][c]){ ch[u][c]=++sz; } u=ch[u][c]; val[u]++; }
} void remove(int num){int u=0;for(int i=29;i>=0;i--){int c=((num>>i)&1);int pre = u;u = ch[u][c];if(--val[u]==0) ch[pre][c]=0;}}int query(int num){ int p=0,v=0;for(int i=29;i>=0;i--){int c=((num>>i)&1);if(ch[p][c])p=ch[p][c];else {p=ch[p][c^1];v+=(1<<i);}}return v;
}
异或求最
这篇关于01字典树求异或最大值与最小值模板(带删除)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!