bzoj 4260: REBXOR Trie+乱搞
题目大意:
题解:
啊啊啊.
被这种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+乱搞的更多相关文章
- bzoj 4260 REBXOR —— Trie树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4260 用 Trie 树可以找出前缀异或的最大值和后缀异或的最大值,拼起来即可: 注意要先加入 ...
- bzoj 2217 [Poi2011]Lollipop 乱搞 贪心
2217: [Poi2011]Lollipop Time Limit: 15 Sec Memory Limit: 64 MBSec Special JudgeSubmit: 383 Solved ...
- BZOJ - 2500 树形DP乱搞
题意:给出一棵树,两个给给的人在第\(i\)天会从节点\(i\)沿着最长路径走,求最长的连续天数\([L,R]\)使得\([L,R]\)为起点的最长路径极差不超过m 求\(1\)到\(n\)的最长路经 ...
- BZOJ 2456: mode(乱搞)
挺神奇的一道题,被1M内存坑了好久= =,这道题得记录当前众数以及众数与其他数的差,如果现在读入的这个数与众数相等,就加1,否则减一,如果差为0就替代掉他,可以证明如果众数存在的话这样一定能找出来 C ...
- BZOJ 4216 Pig 分块乱搞
题意:id=4216">链接 方法:分块以节约空间. 解析: 这题坑的地方就是他仅仅有3M的内存限制,假设我们开longlong前缀和是必死的. 所以考虑缩小这个long long数组 ...
- bzoj 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞
没用的话:好像很久没发博客了,主要是懒太蒟找不到水题.我绝对没弃坑...^_^ 还用些话:本文为博主原创文章,若转载请注明原网址和作者. 进入正题: 先pa网址: bzoj :http://www.l ...
- BZOJ 1011--[HNOI2008]遥远的行星(乱搞)
1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec Memory Limit: 162 MBSec Special JudgeSubmit: 5684 Solved ...
- 【BZOJ 4148】 4148: [AMPPZ2014]Pillars (乱搞)
4148: [AMPPZ2014]Pillars Time Limit: 5 Sec Memory Limit: 256 MBSec Special JudgeSubmit: 100 Solve ...
- Bzoj 1926: [Sdoi2010]粟粟的书架(二分答案+乱搞+主席树)
1926: [Sdoi2010]粟粟的书架 Time Limit: 30 Sec Memory Limit: 552 MB Description 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱 ...
随机推荐
- EventBus的使用详解,功能为在Fragment,Activity,Service,线程之间传递消息
最近跟同事用到了EventBus的使用,之前不太了解EventBus,查阅资料发现EventBus还挺好用的,用法比较简单,下面就把我看到的关于EventBus的博客分享给大家,里面介绍了很多的使用详 ...
- github常见错误
如果输入$ Git remote add origin git@github.com:djqiang(github帐号名)/gitdemo(项目名).git 提示出错信息:fatal: remote ...
- c_str()方法使用
语法: const char *c_str(); c_str()函数返回一个指向正规C字符串的指针常量, 内容与本string串相同. 这是为了与c语言兼容,在c语言中没有string类型,故必须通过 ...
- EF中几个重要的类:ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateManager
ObjectContext封装 .NET Framework 和数据库之间的连接.此类用作“创建”.“读取”.“更新”和“删除”操作的网关. ObjectContext 类为主类,用于与作为对象(这些 ...
- 【python】-- 装饰器、迭代器、生成器
装饰器 装饰器本质是函数,是用来装饰其他函数,顾名思义就是,为其他的函数添加附件功能的. 一.装饰器原则: 不能修改被装饰函数的源代码 不能修改被装饰函数的调用方式 def logging(): pr ...
- Django 认证系统 cookie & session & auth模块
概念 cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. cookie的工作原理是:由服务器产生内容,浏 ...
- postgres=# psql -U postgres -h 127.0.0.1 -p 5432 -d dreamstart_dev -w
postgres=# psql -U postgres -h 127.0.0.1 -p 5432 -d dreamstart_dev -wpostgres-# \dNo relations found ...
- LeetCode:验证回文串【125】
LeetCode:验证回文串[125] 题目描述 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例 1: 输入: ...
- MD5加密“破解”在.NET平台实现最基本的理解
MD5作为一种散列算法,广泛用于密码传输过程中的“加密”(引号的意思是这并不是真正的加密,而是形成密码的散列值)过程.MD顾名思义Message Digest(报文摘要),可以将输入的密码,一般来说为 ...
- VC2010编译时提示:转换到 COFF 期间失败: 文件无效或损坏
有时候新安装好VS2010后编译时就提示上述错误,罗列一下从网上查找到的几种解决方案: 方案1: 点击“项目”-->“属性”--> “清单工具”, 然后选择"输入和输出’--&g ...