4260: Codechef REBXOR

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 918  Solved: 420
[Submit][Status][Discuss]

Description

Input

输入数据的第一行包含一个整数N,表示数组中的元素个数。
第二行包含N个整数A1,A2,…,AN。
 
 

Output

输出一行包含给定表达式可能的最大值。
 

Sample Input

5
1 2 3 1 2

Sample Output

6

HINT

满足条件的(l1,r1,l2,r2)有:(1,2,3,3),(1,2,4,5),(3,3,4,5)。
对于100%的数据,2 ≤ N ≤ 4*105,0 ≤ Ai ≤ 109。
 
  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5. const int N=4e5+;
  6. struct Trie
  7. {
  8.     int next[];
  9. } Ti[N*];
  10. int sz,v[N],l[N],r[N],vt[N];
  11. void add(int x)
  12. {
  13.     for(int u=,i=,op; i>=; --i)
  14.     {
  15.         op=((<<i)&x)?:;
  16.         if(!Ti[u].next[op])
  17.         {
  18.             Ti[u].next[op]=++sz;
  19.             Ti[sz].next[]=Ti[sz].next[]=;
  20.         }
  21.         u=Ti[u].next[op];
  22.     }
  23. }
  24. int get(int x)
  25. {
  26.     int ret=;
  27.     for(int u=,i=,op; i>=; --i)
  28.     {
  29.         op=((<<i)&x)?:;
  30.         if(Ti[u].next[op])
  31.         {
  32.             u=Ti[u].next[op];
  33.             ret|=(<<i);
  34.         }
  35.         else u=Ti[u].next[!op];
  36.     }
  37.     return ret;
  38. }
  39. int main()
  40. {
  41.     int n;
  42.     scanf("%d",&n);
  43.     for(int i=; i<=n; ++i) scanf("%d",v+i);
  44.     for(int i=; i<=n; ++i) vt[i]=v[i]^vt[i-];
  45.     vt[]=vt[n+]=;
  46.     for(int i=; i<=n; ++i)
  47.     {
  48.         l[i]=max(l[i-],get(vt[i]));
  49.         add(vt[i]);
  50.     }
  51.     sz=;
  52.     Ti[].next[]=Ti[].next[]=;//智障处1
  53.     memset(vt,,sizeof(vt));
  54.     for(int i=n; i>; --i)
  55.         vt[i]=v[i]^vt[i+];  //智障处2
  56.     for(int i=n+; i>=; --i)
  57.     {
  58.         r[i]=max(get(vt[i]),r[i+]);  //智障处3
  59.         add(vt[i]);
  60.     }
  61.     int ans=;
  62.     for(int i=; i<n; ++i)
  63.         ans=max(ans,l[i]+r[i+]);
  64.     printf("%d\n",ans);
  65. }
  66.  
  67.  

BZOJ4260异或和的更多相关文章

  1. BZOJ4260,LOJ10051 Nikitosh 和异或

    题意 给定一个含 \(N\) 个元素的数组 \(A\),下标从 \(1\) 开始.请找出下面式子的最大值:\((A[l_1]\bigoplus A[l_1+1]\bigoplus -\bigoplus ...

  2. [BZOJ4260] Codechef REBXOR (01字典树,异或前缀和)

    Description Input 输入数据的第一行包含一个整数N,表示数组中的元素个数. 第二行包含N个整数A1,A2,-,AN. Output 输出一行包含给定表达式可能的最大值. Sample ...

  3. 【BZOJ4260】Codechef REBXOR (Trie树)

    [BZOJ4260]Codechef REBXOR (Trie树) 题面 BZOJ 题解 两眼题.第一眼不会做,第二眼好简单... 前缀异或和一下,拿\(Trie\)树维护求一个在这个端点以左的最大值 ...

  4. [BZOJ4260]Codechef REBXOR(Trie)

    Trie模板题.求出每个前缀和后缀的最大异或和区间,枚举断点就可.不知为何跑得飞快. #include<cstdio> #include<cstring> #include&l ...

  5. BZOJ4260 Codechef REBXOR(trie)

    用trie求出前缀最大区间异或和.后缀最大区间异或和即可.注意空间是nlog的. #include<iostream> #include<cstdio> #include< ...

  6. 【BZOJ4260】Codechef REBXOR Trie树+贪心

    [BZOJ4260]Codechef REBXOR Description Input 输入数据的第一行包含一个整数N,表示数组中的元素个数. 第二行包含N个整数A1,A2,…,AN. Output ...

  7. Android数据加密之异或加密算法

    前言: 这几天被公司临时拉到去做Android IM即时通信协议实现,大致看了下他们定的协议,由于之前没有参与,据说因服务器性能限制,只达成非明文传递,具体原因我不太清楚,不过这里用的加密方式是采用异 ...

  8. Oracle数据库异机升级

    环境: A机:RHEL5.5 + Oracle 10.2.0.4 B机:RHEL5.5 需求: A机10.2.0.4数据库,在B机升级到11.2.0.4,应用最新PSU补丁程序. 目录: 一. 确认是 ...

  9. [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 ...

随机推荐

  1. Flask中可以利用Flask-SQLAlchemy

    为什么80%的码农都做不了架构师?>>>   官方文档:http://flask-sqlalchemy.pocoo.org/2.3/ 1.安装(进入虚拟环境)--利用镜像安装PyMy ...

  2. Blockchain

    一.中心化 中心化原则是我们日常比较常见的支付手段. 科普文章喜欢用网购举例: 1.你在某宝支付了一件商品,钱先到马云爸爸手中,通知商家发货: 2.商家发货,你收货后确认无误,点击确认收货: 3.马云 ...

  3. 一个简单的wed服务器SHTTPD(3)————SHTTPD多客户端支持的实现

    //start from the very beginning,and to create greatness //@author: Chuangwei Lin //@E-mail:979951191 ...

  4. VMware的安装与部署Linux系统

            首先我们需要准备好我们将会用到的东西:VMware12.RHEL7.0         网址我就不放了,大家自行百度哟. 一.安装VMware         我们需要安装VMware ...

  5. qt creator源码全方面分析(4-2)

    目录 global头文件 global.h xx.h global头文件 插件的本质就是动态链接库,对于库,需要导出符号,供用户导入使用.在qt creator的源码中,存在固定的导入导出模式. gl ...

  6. HDU1176(正推DP)

    时间和位置都可以决定这一秒捡到的馅饼数 不妨设\(dp[i][j]\)为在\(i\)秒\(j\)位置的最大收益 那么\(dp[0][5]=0\),dp数组的其他部分置成-1代表不能转移 那么对于第\( ...

  7. 一文教你快速搞懂 FOC ramp function 斜坡函数的作用和实现

    文章目录 定义 程序的实现 matlab 程序 C语言程序 定义 x(t)={0,t<0At,t≥0 x(t) = \begin{cases} 0,t<0\\ At,t \ge 0\\ \ ...

  8. JDK/Java 14 发布

    3 月 17 日,JDK/Java 14 正式 GA. 此版本包含的 JEP(Java/JDK Enhancement Proposals,JDK 增强提案)比 Java 12 和 13 加起来的还要 ...

  9. [hdu1023]递推

    http://acm.hdu.edu.cn/showproblem.php?pid=1023 如果把栈里面的元素个数表示成状态,每一步(共2 * n步)的状态构成的状态序列的种数就是答案,令dp[i] ...

  10. 修改托管dll文件

    众所周知,托管的dll是可以反编译且可以修改的. 可以用ildasm.exe导出IL文件,修改IL文件后,用ilasm编译成DLL 用ildasm.exe导出IL文件 1.获得ildasm.exe  ...