题目大意:

http://www.lydsy.com/JudgeOnline/problem.php?id=4260

题解:

啊啊啊.

被这种SB题坑了半天.

求出异或前缀和后

从n到1枚举\(r_1\)的取值就好了啊.

用Trie 算出1 ~ \(r_1-1\)和\(a_{r_1}\)的异或最大值ans1

以及\(a_{r_1 + 1}\)和\(r_1 + 1\) ~ n的异或最大值ans2

用ans1 + max{ans2}更新答案就好了

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
inline void read(int &x){
x=0;char ch;bool flag = false;
while(ch=getchar(),ch<'!');if(ch == '-') ch=getchar(),flag = true;
while(x=10*x+ch-'0',ch=getchar(),ch>'!');if(flag) x=-x;
}
const int maxn = 600010;
struct Node{
Node* ch[2];
int siz;
}*null,*root[maxn];
Node mem[maxn*32],*it;
inline void init(){
it = mem;
null = it++;null->ch[0] = null->ch[1] = null;
null->siz = 0;
}
Node* insert(Node *rt,int x,int d){
Node *p = it++;*p = *rt;p->siz ++;
if(d == -1) return p;
int id = (x>>d)&1;
p->ch[id] = insert(p->ch[id],x,d-1);
return p;
}
int query(Node *p1,Node *p2,int x,int d){
if(d == -1) return 0;
int id = (x>>d)&1;
if(p2->ch[id^1]->siz - p1->ch[id^1]->siz > 0)
return (1<<d) | query(p1->ch[id^1],p2->ch[id^1],x,d-1);
return query(p1->ch[id],p2->ch[id],x,d-1);
}
void dfs(Node *p){
printf("siz = %d\n",p->siz);
if(p->ch[0] != null){puts("-> ch[0] : ");dfs(p->ch[0]);}
if(p->ch[1] != null){puts("-> ch[1] : ");dfs(p->ch[1]);}
puts("return");
}
int a[maxn];
int main(){
int n;read(n);init();root[0] = null;
root[1] = insert(root[0],0,31);
++n;
for(int i=2;i<=n;++i){
read(a[i]);a[i] ^= a[i-1];
root[i] = insert(root[i-1],a[i],31);
}
int ans = 0,max2 = 0;
for(int i=n;i>=2;--i){
max2 = max(max2,query(root[i],root[n],a[i],31));
ans = max(ans,max2 + query(root[0],root[i],a[i],31));
}printf("%d\n",ans);
getchar();getchar();
return 0;
}

bzoj 4260: REBXOR Trie+乱搞的更多相关文章

  1. bzoj 4260 REBXOR —— Trie树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4260 用 Trie 树可以找出前缀异或的最大值和后缀异或的最大值,拼起来即可: 注意要先加入 ...

  2. bzoj 2217 [Poi2011]Lollipop 乱搞 贪心

    2217: [Poi2011]Lollipop Time Limit: 15 Sec  Memory Limit: 64 MBSec  Special JudgeSubmit: 383  Solved ...

  3. BZOJ - 2500 树形DP乱搞

    题意:给出一棵树,两个给给的人在第\(i\)天会从节点\(i\)沿着最长路径走,求最长的连续天数\([L,R]\)使得\([L,R]\)为起点的最长路径极差不超过m 求\(1\)到\(n\)的最长路经 ...

  4. BZOJ 2456: mode(乱搞)

    挺神奇的一道题,被1M内存坑了好久= =,这道题得记录当前众数以及众数与其他数的差,如果现在读入的这个数与众数相等,就加1,否则减一,如果差为0就替代掉他,可以证明如果众数存在的话这样一定能找出来 C ...

  5. BZOJ 4216 Pig 分块乱搞

    题意:id=4216">链接 方法:分块以节约空间. 解析: 这题坑的地方就是他仅仅有3M的内存限制,假设我们开longlong前缀和是必死的. 所以考虑缩小这个long long数组 ...

  6. bzoj 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞

    没用的话:好像很久没发博客了,主要是懒太蒟找不到水题.我绝对没弃坑...^_^ 还用些话:本文为博主原创文章,若转载请注明原网址和作者. 进入正题: 先pa网址: bzoj :http://www.l ...

  7. BZOJ 1011--[HNOI2008]遥远的行星(乱搞)

    1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special JudgeSubmit: 5684  Solved ...

  8. 【BZOJ 4148】 4148: [AMPPZ2014]Pillars (乱搞)

    4148: [AMPPZ2014]Pillars Time Limit: 5 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 100  Solve ...

  9. Bzoj 1926: [Sdoi2010]粟粟的书架(二分答案+乱搞+主席树)

    1926: [Sdoi2010]粟粟的书架 Time Limit: 30 Sec Memory Limit: 552 MB Description 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱 ...

随机推荐

  1. office2013安装/激活

    ed2k://|file|cn_office_professional_plus_2013_x64_dvd_1134006.iso|914106368|E5FBAE9EE9CB35D5E777EA78 ...

  2. 我的Android进阶之旅------>/storage/sdcard0, /sdcard, /mnt/sdcard ,/storage/emulated/legacy 的区别

    转自:http://bbs.gfan.com/android-5382920-1-1.html 关于android的4.2的0文件夹的详解---- android 4.0 ----在galaxy ne ...

  3. go语言之并发编程一

    Go语言最大的优势就在于并发编程.Go语言的关键字go就是开启并发编程也就是goroutine的唯一途径.一条go语句以为着一个函数或方法的并发执行.Go语句是由go关键字和表达式组成.比如下面的这种 ...

  4. Linux c编程:I/O多路复用之epoll

    前面介绍了select处理,这一章继续介绍另外一种I/O多路服用的机制:epoll.来比较下两种机制的不同点. select: 调用过程如下: (1)使用copy_from_user从用户空间拷贝fd ...

  5. oracle decode的用法

    需求:分别统计emp表中1980,1981,1982,1987年入职的同事的数量. 这里用decode很容易就解决了: select sum(t.num_1980) as "1980&quo ...

  6. 分析DNS解析时间

    提高网页的打开速度,一般地我们会选择使用CDN,利用“就近原则”让用户在最短的时间内获取到服务器资源,实际应用当中采用CDN的方式提高网站访问速度的效果也是最明显的.这也就是为什么国外的空间打开速度远 ...

  7. Yii2发送短信验证码完全解决方案

    概述 在做项目的时候,需要用到短信发送验证码功能.不能不说Yii2的牛逼,很容易就搞定了.下面我整理一下具体功能和流程,分享给大家. 主要功能 通过Yii2 rules验证手机号 通过js验证是否为手 ...

  8. iOS 读取本地Json文件

    之前写过类似的方法 今天写这个 的目的是 应对开发过程中面对 服务端数据刚定下模型 但是接口不通 的情况下 不耽误客户端开发进度 + (id)getJsonDataJsonname:(NSString ...

  9. 每天一个Linux命令(33)cal命令

          cal命令用于显示当前日历,或者指定日期的日历.   (1)用法: 用法: cal [选项]  [[[日] 月] 年] (2)功能:       功能:  用于查看日历等时间信息,如只有一 ...

  10. 0417 封装 property、classmethod、staricmethod

    一.封装 把一堆东西装在一个容器里 函数和属性装到了一个非全局的命名空间 class A: __N = 123 # 静态变量 def func(self): print(A.__N) # 在类的内部使 ...