BZOJ 4260 Codechef REBXOR 可持久化Trie树
来源:互联网 发布:四川大学网络教育官网 编辑:程序博客网 时间:2024/05/17 03:05
题目大意:给定一个长度为
傻逼题……
求前缀和,问题转化成了求
从大到小枚举
用可持久化Trie树即可完成上述操作
时间复杂度
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define M 400400using namespace std;int n,ans,_max;int a[M];struct Trie{ Trie* son[2]; int size; #define ls son[0] #define rs son[1] void* operator new (size_t,Trie *_,Trie *__,int ___) { static Trie mempool[M*32],*C=mempool; C->ls=_; C->rs=__; C->size=___; return C++; } friend Trie* Insert(Trie *p,int x,int digit) { if(!digit) return new (p->ls,p->rs,p->size+1)Trie; if(x&digit) return new (p->ls,Insert(p->rs,x,digit>>1),p->size+1)Trie; else return new (Insert(p->ls,x,digit>>1),p->rs,p->size+1)Trie; } friend int Query(Trie *p1,Trie *p2,int x,int digit) { if(!digit) return 0; if(p1->son[bool(~x&digit)]->size - p2->son[bool(~x&digit)]->size) return digit | Query(p1->son[bool(~x&digit)],p2->son[bool(~x&digit)],x,digit>>1); else return Query(p1->son[bool(x&digit)],p2->son[bool(x&digit)],x,digit>>1); }}*mem[M],**tree=mem+1;int main(){ int i; cin>>n; for(i=1;i<=n;i++) { scanf("%d",&a[i]); a[i]^=a[i-1]; } tree[-1]=new (0x0,0x0,0)Trie; tree[-1]->ls=tree[-1]->rs=tree[-1]; for(i=0;i<=n;i++) tree[i]=Insert(tree[i-1],a[i],1<<29); for(i=n-1;i;i--) { _max=max(_max,Query(tree[n],tree[i],a[i],1<<29)); ans=max(ans,_max+Query(tree[i],tree[-1],a[i],1<<29)); } cout<<ans<<endl; return 0;}
1 1
- BZOJ 4260 Codechef REBXOR 可持久化Trie树
- 【BZOJ 4260】Codechef REBXOR 可持久化trie树
- [BZOJ]4260: Codechef REBXOR 可持久化Trie
- BZOJ 4260: Codechef REBXOR|Trie树
- 【BZOJ 4260】 Codechef REBXOR|trie
- bzoj 4260: Codechef REBXOR Trie
- BZOJ 4260 Codechef REBXOR trie树+树状数组
- BZOJ 4260 Codechef REBXOR 01Trie
- 4260: Codechef REBXOR trie
- bzoj 4260 Codechef REBXOR
- bzoj 4260: Codechef REBXOR
- BZOJ 4546|CodeChef XRQRS|Xor Queries|可持久化Trie
- bzoj 4546: codechef XRQRS 可持久化trie
- BZOJ 4260: Codechef REBXOR 字典树
- 【bzoj4260】 Codechef REBXOR trie树
- 【CodeChef-XRQRS】Xor Queries【可持久化Trie / +主席树】
- 【BZOJ4546】codechef XRQRS【可持久化Trie / +主席树】
- 【bzoj4260】【Codechef REBXOR】【trie】
- sql之left join、right join、inner join的区别 union和union all
- ZOJ.1797 Least Common Multiple【最小公倍数,水】 2015/09/22
- Eclipse启动出现an error has occurred see the log file的解决方法
- 获取网络下载请求工具类
- Android Studio无法识别测试用例
- BZOJ 4260 Codechef REBXOR 可持久化Trie树
- java 中文简体繁体互相转换
- 第四周--建立双链表算法库
- ACM-ICPC国际大学生程序设计竞赛北京赛区(2015)网络赛
- C++的shared_ptr智能指针的使用示例
- 20国创意精英 拥抱“设计+”时代-2015成功设计大赛颁奖典礼在沪圆满举行
- Caused by: java.lang.IllegalArgumentException: addChild: Child name 'localhost' is not unique
- android中color的用法及十六进制编码大全
- GDAL百分比剪辑拉伸,拉伸算法可以并行,但是RasterIO并行会出错误。