bzoj 3261最大异或和 可持久化字典树
来源:互联网 发布:淘宝开店怎么推广宣传 编辑:程序博客网 时间:2024/06/03 07:15
裸的可持久化字典树。
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int maxn=600005;int root[maxn];int cnt;int fa[30];namespace Trie{ int sum[maxn*25]; int ch[maxn*25][2]; void init(){ memset(ch,0,sizeof(ch)); memset(sum,0,sizeof(sum)); } void insert(int pre,int no,int val){ for(int i=23;i>=0;i--){ ch[no][0]=ch[pre][0]; ch[no][1]=ch[pre][1]; sum[no]=sum[pre]+1; int w=(val>>i)&1; ch[no][w]=++cnt; no=ch[no][w]; pre=ch[pre][w]; } sum[no]=sum[pre]+1; } int query(int pre,int no,int val){ int s=0; for(int i=23;i>=0;i--){ int w=(val>>i)&1; if(sum[ch[no][w^1]]-sum[ch[pre][w^1]]>0){ s+=fa[i]; w=w^1; } no=ch[no][w]; pre=ch[pre][w]; } return s; }}char c[2];int main(){ for(int i=0;i<30;i++) fa[i]=1<<i; int n,m; cin>>n>>m; int all=0; for(int i=1;i<=n;i++){ root[i]=++cnt; Trie::insert(root[i-1],root[i],all); int p; scanf("%d",&p); all^=p; } while(m--){ scanf("%s",c); if(c[0]=='A'){ int x; scanf("%d",&x); root[n+1]=++cnt; n++; Trie::insert(root[n-1],root[n],all); all^=x; } else{ int l,r,x; scanf("%d%d%d",&l,&r,&x); printf("%d\n",Trie::query(root[l-1],root[r],x^all)); } }}
0 0
- [可持久化字典树] BZOJ 3261 最大异或和
- bzoj 3261最大异或和 可持久化字典树
- bzoj 3261: 最大异或和 可持久化字典树
- [BZOJ 3261]最大异或和:可持久化字典树
- BZOJ 3261: 最大异或和 可持久化字典树
- bzoj3261 最大异或和(可持久化字典树)
- BZOJ3261最大异或和(可持久化字典树)
- BZOJ 3261 最大异或和 可持久化Trie
- BZOJ 3261 最大异或和 可持久化Trie
- [BZOJ]3261: 最大异或和 可持久化Trie
- bzoj 3261 最大异或和 可持久化trie树
- BZOJ 3261 最大异或和 可持久化Trie树
- BZOJ 3261: 最大异或和|可持久化Tire树
- BZOJ 3261 浅谈可持久化TRIE树最大连续异或和
- BZOJ 3261 最大异或和 && qwb VS 去污棒(可持久化01Trie)
- BZOJ 3261 可持久化字典树
- 3261: 最大异或和 可持久化trie
- 【BZOJ3261】最大异或和【可持久化Trie树】
- App导航 - 具有android或IOS的特性设计
- bzoj 3166 [Heoi2013]Alo 可持久化字典树
- 【PAT】(乙级)1009. 说反话 (20)
- Android N新特性——Notification快速回复
- poj2676 Sudoku 数独
- bzoj 3261最大异或和 可持久化字典树
- json对象和java对象的相互转换方法(json-lib、jackson、fastjson、gson)
- 软件测试基础(三)---黑盒测试之边界值法
- javaScript 跨域总结与解决办法
- 洛谷 P1967 Vijos P1843 CODE[VS] P3287 [NOIP2013 D1T3] 货车运输
- SurfaceView的看法
- TCP三次握手和四次挥手
- HDU 5807 BestCoder Round #86 Keep In Touch (分段式DP)
- leetcode--17. Letter Combinations of a Phone Number