真是6块钱cpu(笑

爆炸入口

踹树练习(汗

对于二进制异或和弹性,我们可以贪心的来做。

瓶颈在于快速贪心。

我们可以维护一个trie树,储存异或前缀和。每次在trie树上贪心的跑。

正向and反向跑一次,就可以了

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int manx=4e+5;
int t[manx<<5][2],tail;
int l[manx],r[manx],a[manx];
void ins(int val)
{
int now=0;
for(int i=1<<30;i;i>>=1)
{
int c=(val&i) ? 1 : 0 ;
if(!t[now][c]) t[now][c]=++tail;
now=t[now][c];
}
return ;
}//插入
int find(int val)
{
int now=0,ans=0;
for(int i=1<<30;i;i>>=1)
{
int c=(val&i) ? 1 : 0;
if(t[now][c^1]) now=t[now][c^1],ans+=i;//每次根据二进制位,贪心的选择路径
else now=t[now][c];
}
return ans;
}
int main()
{
int n;
scanf("%d",&n);
int now=0;ins(0);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
now^=a[i];
ins(now);
l[i]=max(l[i-1],find(now));
}//正向扫一遍
memset(t,0,sizeof(t));now=0,tail=0;ins(0);
for(int i=n;i>=1;i--)
{
now^=a[i];
ins(now);
r[i]=max(r[i+1],find(now));//反向和一遍
}
int ans=-0x7fffffff;
for(int i=1;i<=n;i++)
ans=max(l[i]+r[i+1],ans);//这里我们只需要保证不香蕉就可以了(汗
printf("%d",ans);
}

B4260 Codechef REBXOR的更多相关文章

  1. 【BZOJ4260】 Codechef REBXOR 可持久化Trie

    看到异或就去想前缀和(⊙o⊙) 这个就是正反做一遍最大异或和更新答案 最大异或就是很经典的可持久化Trie,从高到低贪心 WA: val&(1<<(base-1))得到的并不直接是 ...

  2. BZOJ 4260: Codechef REBXOR( trie )

    求出前缀和, 那么以第x个元素结尾的最大异或值是max(sumx^sump)(1≤p<x), 用trie加速. 后缀同理, 然后扫一遍就OK了.时间复杂度O(31N) ------------- ...

  3. bzoj 4260: Codechef REBXOR (01 Trie)

    链接: https://www.lydsy.com/JudgeOnline/problem.php?id=4260 题面: 4260: Codechef REBXOR Time Limit: 10 S ...

  4. 【BZOJ4260】Codechef REBXOR (Trie树)

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

  5. 【BZOJ】4260: Codechef REBXOR【Trie树】【前后缀异或最大】

    4260: Codechef REBXOR Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 2218  Solved: 962[Submit][Stat ...

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

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

  7. [Bzoj4260]Codechef REBXOR(trie树)

    4260: Codechef REBXOR Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1534  Solved: 669[Submit][Stat ...

  8. BZOJ4260 Codechef REBXOR 题解

    题目大意: 有一个长度为n的序列,求1≤l1≤r1<l2≤r2≤n使得(⊕r1i=l1ai)+(⊕r2i=l2ai)最大,输出这个最大值. 思路: 用Trie求出前缀异或和以及后缀异或和,再求出 ...

  9. BZOJ4260: Codechef REBXOR

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

随机推荐

  1. Unity 改变游戏对象的Scale引起的不好结果

    1. 当一个游戏对象的中心(它的x,y,z的交点)  不在它的正中间时,改变它的Scale时它的中心也会变的. 如图:这是用PlayMkaer做的,胶囊体碰到瓶子瓶子会碎,会在瓶子的中心位置那生成一个 ...

  2. IBM-内存管理内幕 动态分配的选择、折衷和实现

    https://www.ibm.com/developerworks/cn/linux/l-memory/ 为什么必须管理内存 内存管理是计算机编程最为基本的领域之一.在很多脚本语言中,您不必担心内存 ...

  3. 在rails 中使用mysql 出现Mysql::Error: Incorrect string value: 的问题

    这是因为你在做数据库的操作中有非英文的问题,之后gem mysql2 处理中文必须要数据库也指定是utf-8 才比较好处理 解决的方法很简单,将数据库每张表都转化成utf-8即可,如果数据库没有什么重 ...

  4. Kure讲HTML_HTML界面结构

    1.HTML界面结构: 通常通过html开发的网页,它有一个自己固定的书写格式(类似于写信的时候也有固定的格式) <!-- DOCTYPE用来告诉浏览器用当前html文档是用html的哪个版本编 ...

  5. JetBrains IDE激活

    License server(服务器地址为http://idea.iteblog.com/key.php) Active Code:生成网址:http://idea.iteblog.com/

  6. hibernate课程 初探一对多映射2-5 创建持久化类并配置映射文件

    学习点: 1 一对多映射,一方 Grade.hbm.xml的写法: <hibernate-mapping> <class name="com.ddwei.entity.Gr ...

  7. git合并分支上的commit为一条commit到master

    标签: git 缘由? 有一次被人问到怎么把一个分支的所有commit按一个commit合并到主分支上,当时一脸蒙B,平时开发都是直接merge,很少考虑到这种问题,于是特意搜索了相关资料. 场景 其 ...

  8. Linux 作业调度器 crond

    linux缺省会启动crond进程,crond进程不需要用户启动.关闭.  需要启动/关闭cron /sbin/service crond start --启动服务 /sbin/service cro ...

  9. solr 集群(SolrCloud 分布式集群部署步骤)

    SolrCloud 分布式集群部署步骤 安装软件包准备 apache-tomcat-7.0.54 jdk1.7 solr-4.8.1 zookeeper-3.4.5 注:以上软件都是基于 Linux ...

  10. 什么是TOPO学

    拓扑,一个跟门萨同样古怪的“科技Word”.其定义,对绝大多数读者而言,不一定需要理解,但无妨知道———拓扑学,数学的一门分科,研究几何图形在一对一的双方连续变换下不变的性质.不少门萨题,来自拓扑学, ...