BZOJ4260异或和
4260: Codechef REBXOR
Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 918 Solved: 420
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1 2 3 1 2
Sample Output
HINT
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- const int N=4e5+;
- struct Trie
- {
- int next[];
- } Ti[N*];
- int sz,v[N],l[N],r[N],vt[N];
- void add(int x)
- {
- for(int u=,i=,op; i>=; --i)
- {
- op=((<<i)&x)?:;
- if(!Ti[u].next[op])
- {
- Ti[u].next[op]=++sz;
- Ti[sz].next[]=Ti[sz].next[]=;
- }
- u=Ti[u].next[op];
- }
- }
- int get(int x)
- {
- int ret=;
- for(int u=,i=,op; i>=; --i)
- {
- op=((<<i)&x)?:;
- if(Ti[u].next[op])
- {
- u=Ti[u].next[op];
- ret|=(<<i);
- }
- else u=Ti[u].next[!op];
- }
- return ret;
- }
- int main()
- {
- int n;
- scanf("%d",&n);
- for(int i=; i<=n; ++i) scanf("%d",v+i);
- for(int i=; i<=n; ++i) vt[i]=v[i]^vt[i-];
- vt[]=vt[n+]=;
- for(int i=; i<=n; ++i)
- {
- l[i]=max(l[i-],get(vt[i]));
- add(vt[i]);
- }
- sz=;
- Ti[].next[]=Ti[].next[]=;//智障处1
- memset(vt,,sizeof(vt));
- for(int i=n; i>; --i)
- vt[i]=v[i]^vt[i+]; //智障处2
- for(int i=n+; i>=; --i)
- {
- r[i]=max(get(vt[i]),r[i+]); //智障处3
- add(vt[i]);
- }
- int ans=;
- for(int i=; i<n; ++i)
- ans=max(ans,l[i]+r[i+]);
- printf("%d\n",ans);
- }
BZOJ4260异或和的更多相关文章
- BZOJ4260,LOJ10051 Nikitosh 和异或
题意 给定一个含 \(N\) 个元素的数组 \(A\),下标从 \(1\) 开始.请找出下面式子的最大值:\((A[l_1]\bigoplus A[l_1+1]\bigoplus -\bigoplus ...
- [BZOJ4260] Codechef REBXOR (01字典树,异或前缀和)
Description Input 输入数据的第一行包含一个整数N,表示数组中的元素个数. 第二行包含N个整数A1,A2,-,AN. Output 输出一行包含给定表达式可能的最大值. Sample ...
- 【BZOJ4260】Codechef REBXOR (Trie树)
[BZOJ4260]Codechef REBXOR (Trie树) 题面 BZOJ 题解 两眼题.第一眼不会做,第二眼好简单... 前缀异或和一下,拿\(Trie\)树维护求一个在这个端点以左的最大值 ...
- [BZOJ4260]Codechef REBXOR(Trie)
Trie模板题.求出每个前缀和后缀的最大异或和区间,枚举断点就可.不知为何跑得飞快. #include<cstdio> #include<cstring> #include&l ...
- BZOJ4260 Codechef REBXOR(trie)
用trie求出前缀最大区间异或和.后缀最大区间异或和即可.注意空间是nlog的. #include<iostream> #include<cstdio> #include< ...
- 【BZOJ4260】Codechef REBXOR Trie树+贪心
[BZOJ4260]Codechef REBXOR Description Input 输入数据的第一行包含一个整数N,表示数组中的元素个数. 第二行包含N个整数A1,A2,…,AN. Output ...
- Android数据加密之异或加密算法
前言: 这几天被公司临时拉到去做Android IM即时通信协议实现,大致看了下他们定的协议,由于之前没有参与,据说因服务器性能限制,只达成非明文传递,具体原因我不太清楚,不过这里用的加密方式是采用异 ...
- Oracle数据库异机升级
环境: A机:RHEL5.5 + Oracle 10.2.0.4 B机:RHEL5.5 需求: A机10.2.0.4数据库,在B机升级到11.2.0.4,应用最新PSU补丁程序. 目录: 一. 确认是 ...
- [LeetCode] Maximum XOR of Two Numbers in an Array 数组中异或值最大的两个数字
Given a non-empty array of numbers, a0, a1, a2, … , an-1, where 0 ≤ ai < 231. Find the maximum re ...
随机推荐
- Flask中可以利用Flask-SQLAlchemy
为什么80%的码农都做不了架构师?>>> 官方文档:http://flask-sqlalchemy.pocoo.org/2.3/ 1.安装(进入虚拟环境)--利用镜像安装PyMy ...
- Blockchain
一.中心化 中心化原则是我们日常比较常见的支付手段. 科普文章喜欢用网购举例: 1.你在某宝支付了一件商品,钱先到马云爸爸手中,通知商家发货: 2.商家发货,你收货后确认无误,点击确认收货: 3.马云 ...
- 一个简单的wed服务器SHTTPD(3)————SHTTPD多客户端支持的实现
//start from the very beginning,and to create greatness //@author: Chuangwei Lin //@E-mail:979951191 ...
- VMware的安装与部署Linux系统
首先我们需要准备好我们将会用到的东西:VMware12.RHEL7.0 网址我就不放了,大家自行百度哟. 一.安装VMware 我们需要安装VMware ...
- qt creator源码全方面分析(4-2)
目录 global头文件 global.h xx.h global头文件 插件的本质就是动态链接库,对于库,需要导出符号,供用户导入使用.在qt creator的源码中,存在固定的导入导出模式. gl ...
- HDU1176(正推DP)
时间和位置都可以决定这一秒捡到的馅饼数 不妨设\(dp[i][j]\)为在\(i\)秒\(j\)位置的最大收益 那么\(dp[0][5]=0\),dp数组的其他部分置成-1代表不能转移 那么对于第\( ...
- 一文教你快速搞懂 FOC ramp function 斜坡函数的作用和实现
文章目录 定义 程序的实现 matlab 程序 C语言程序 定义 x(t)={0,t<0At,t≥0 x(t) = \begin{cases} 0,t<0\\ At,t \ge 0\\ \ ...
- JDK/Java 14 发布
3 月 17 日,JDK/Java 14 正式 GA. 此版本包含的 JEP(Java/JDK Enhancement Proposals,JDK 增强提案)比 Java 12 和 13 加起来的还要 ...
- [hdu1023]递推
http://acm.hdu.edu.cn/showproblem.php?pid=1023 如果把栈里面的元素个数表示成状态,每一步(共2 * n步)的状态构成的状态序列的种数就是答案,令dp[i] ...
- 修改托管dll文件
众所周知,托管的dll是可以反编译且可以修改的. 可以用ildasm.exe导出IL文件,修改IL文件后,用ilasm编译成DLL 用ildasm.exe导出IL文件 1.获得ildasm.exe ...