3261: 最大异或和 可持久化trie
来源:互联网 发布:调节阀选型计算软件 编辑:程序博客网 时间:2024/05/29 11:26
想学习一下可持久化trie..结果发现没什么要学的,和主席树一样啊,把线段树改成字典树就行了。
#include<iostream>#include<cstdio>#define N 600005using namespace std;int n,m;int a[N],b[N],root[N];inline int read(){ int a=0,f=1; char c=getchar(); while (c<'0'||c>'9') {if (c=='-') f=-1; c=getchar();} while (c>='0'&&c<='9') {a=a*10+c-'0'; c=getchar();} return a*f;}struct trie{ int cnt; int tree[N*24][2],sum[N*24]; inline int insert(int x,int val) { int tmp,y; tmp=y=++cnt; for (int i=23;~i;i--) { tree[y][0]=tree[x][0]; tree[y][1]=tree[x][1]; sum[y]=sum[x]+1; int t=val&(1<<i); t>>=i; x=tree[x][t]; tree[y][t]=++cnt; y=tree[y][t]; } sum[y]=sum[x]+1; return tmp; } inline int query(int l,int r,int val) { int tmp=0; for (int i=23;~i;i--) { int t=val&(1<<i); t>>=i; t^=1; if (sum[tree[r][t]]-sum[tree[l][t]]) tmp|=(1<<i),r=tree[r][t],l=tree[l][t]; else r=tree[r][t^1],l=tree[l][t^1]; } return tmp; }}trie;int main(){ n=read(); m=read(); n++; for (int i=2;i<=n;i++) a[i]=read(); for (int i=1;i<=n;i++) b[i]=b[i-1]^a[i]; for (int i=1;i<=n;i++) root[i]=trie.insert(root[i-1],b[i]); while (m--) { char opt[5]; scanf("%s",opt); if (opt[0]=='A') { n++; a[n]=read(); b[n]=b[n-1]^a[n]; root[n]=trie.insert(root[n-1],b[n]); } else { int l=read(),r=read(),x=read(); printf("%d\n",trie.query(root[l-1],root[r],b[n]^x)); } } return 0;}
0 0
- BZOJ 3261 最大异或和 可持久化Trie
- BZOJ 3261 最大异或和 可持久化Trie
- 3261: 最大异或和 可持久化trie
- [BZOJ]3261: 最大异或和 可持久化Trie
- 【BZOJ3261】最大异或和【可持久化Trie树】
- [BZOJ3261][最大异或和][可持久化Trie]
- [可持久化Trie] BZOJ3261: 最大异或和
- bzoj3261 最大异或和(可持久化Trie)
- bzoj3261 最大异或和【可持久化trie树】
- bzoj 3261 最大异或和 可持久化trie树
- BZOJ 3261 最大异或和 可持久化Trie树
- BZOJ 3261 浅谈可持久化TRIE树最大连续异或和
- BZOJ 3261 最大异或和 && qwb VS 去污棒(可持久化01Trie)
- 【BZOJ】【P3261】【最大异或和】【题解】【可持久化Trie】
- [BZOJ3261]最大异或和(可持久化trie树)
- 【bzoj3261】【最大异或和】可持久化trie树+贪心
- bzoj3261最大异或和&&可持久化Trie树详解
- bzoj3261 最大异或和(可持久化字典树)
- Android学习一
- Service用法概述
- 安卓 设置圆角图片
- BZOJ_P1412 [ZJOI2009]狼和羊的故事(网络流+最大流最小割)
- MFC几个重要的基类
- 3261: 最大异或和 可持久化trie
- 欢迎使用CSDN-markdown编辑器
- 松哥推荐的nginx配置教程
- 8VC Venture Cup 2016 - Elimination Round总结
- C++之 构造函数调用规则
- VBA单元格拷贝
- [NOIP 2010] 引水入城
- Android线程一、AsyncTask使用简介
- UVA1428 Ping pong(树状数组)