【BZOJ4260】Codechef REBXOR Trie树+贪心
【BZOJ4260】Codechef REBXOR
Description

.jpg)
Input
Output
Sample Input
1 2 3 1 2
Sample Output
HINT
题解:如果只求一段异或和的最大值,我们直接用Trie树维护前缀异或和就好了,但这题要求两段,并且互不相交,那我们就维护一个前缀异或和的Trie树,维护一个后缀异或和的Trie数。然后扫两遍,分别记录ls[i]表示i和i左边的数构成连续的一段的最大异或和,rs[i]表示i和i右边的数构成连续的一段的最大异或和。然后直接用rs[i]和ls[i-1]的前缀最大值更新答案。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int maxn=400010;
int ch[maxn*32][2],ls[maxn],rs[maxn];
int n,v[maxn],tot,sum,ans,maxx;
void insert(int num)
{
int i,d,u=1;
for(i=1<<30;i;i>>=1)
{
d=(num&i)>0;
if(!ch[u][d]) ch[u][d]=++tot;
u=ch[u][d];
}
}
int query(int num)
{
int i,d,u=1,ret=0;
for(i=1<<30;i;i>>=1)
{
d=!(num&i);
if(ch[u][d]) u=ch[u][d],ret|=i;
else u=ch[u][d^1];
}
return ret;
}
int main()
{
scanf("%d",&n);
int i;
tot=1,insert(0),sum=0;
for(i=1;i<=n;i++) scanf("%d",&v[i]),sum^=v[i],ls[i]=query(sum),insert(sum);
tot=1,memset(ch,0,sizeof(ch)),insert(0),sum=0;
for(i=n;i>=1;i--) sum^=v[i],rs[i]=query(sum),insert(sum);
maxx=-1<<30;
for(i=1;i<=n;i++) ans=max(ans,maxx+rs[i]),maxx=max(maxx,ls[i]);
printf("%d",ans);
return 0;
}
【BZOJ4260】Codechef REBXOR Trie树+贪心的更多相关文章
- 【bzoj4260】Codechef REBXOR Trie树
题目描述 输入 输入数据的第一行包含一个整数N,表示数组中的元素个数. 第二行包含N个整数A1,A2,…,AN. 输出 输出一行包含给定表达式可能的最大值. 样例输入 5 1 2 3 1 2 样例输出 ...
- BZOJ 4260: Codechef REBXOR (trie树维护异或最大值)
题意 分析 将区间异或和转化为前缀异或和.那么[L,R][L,R][L,R]的异或和就等于presum[R] xor presum[L−1]presum[R]\ xor \ presum[L-1]pr ...
- BZOJ4260: Codechef REBXOR (01Tire树)
题意 题目链接 Sol 首先维护出前缀xor和后缀xor 对每个位置的元素插入到Trie树里面,每次找到和该前缀xor起来最大的元素 正反各做一遍,取最大. 记得要开log倍空间qwq.. #incl ...
- bzoj 4260 Codechef REBXOR——trie树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4260 一段的异或和就是两个前缀的异或和.正反扫两边,用trie树算每个位置为左/右端点时最大 ...
- 【bzoj4260】 Codechef REBXOR trie树
Input 输入数据的第一行包含一个整数N,表示数组中的元素个数. 第二行包含N个整数A1,A2,…,AN. Output 输出一行包含给定表达式可能的最大值. Sample Input ...
- [BZOJ4260]Codechef REBXOR(Trie)
Trie模板题.求出每个前缀和后缀的最大异或和区间,枚举断点就可.不知为何跑得飞快. #include<cstdio> #include<cstring> #include&l ...
- 【BZOJ3261】最大异或和 Trie树+贪心
[BZOJ3261]最大异或和 Description 给定一个非负整数序列 {a},初始长度为 N. 有 M个操作,有以下两种操作类型:1 .A x:添加操作,表示在序列末尾添加一个 ...
- [Bzoj4260]Codechef REBXOR(trie树)
4260: Codechef REBXOR Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1534 Solved: 669[Submit][Stat ...
- bzoj4260 REBXOR——Trie树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4260 对于每个位置,求一个前缀最大值和后缀最大值: 也就是从1到 i 的异或和要找前面某处的 ...
随机推荐
- Windows 10 KMS 激活方法
本篇文章由:http://xinpure.com/windows-10-activate-method/ 摘抄: http://www.nruan.com/win-key.html 须知:如果需要在线 ...
- 《将一个字符串转换成datetime时,先分析该字符串以获取日期,然后再将每个变量放置到datetime对象中》的解决办法
我们在写代码时,稍不注意就收到VS那文不对题的错误提示. 最近在项目上碰到了“将一个字符串转换成datetime时,先分析该字符串以获取日期,然后再将每个变量放置到datetime对象中”的这个错误提 ...
- 【转】火星坐标、百度坐标、WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版
原文地址:https://www.cnblogs.com/fwc1994/p/5884115.html 火星坐标 火星坐标是国家测绘局为了国家安全在原始坐标的基础上进行偏移得到的坐标,基本国内的电子地 ...
- 【原创】k8s源代码分析-----kubelet(8)pod管理
本文QQ空间链接:http://user.qzone.qq.com/29185807/blog/1460540474 本文csdn博客链接:http://blog.csdn.net/screscent ...
- php_memcahed telnet远程操作方法
一.存储命令 存储命令的格式: <command name> <key> <flags> <exptime> <bytes> <dat ...
- 用 php 实现一个视图组件和模板引擎——基础
只要不是做后端接口开发和一些作为守护进程之类的服务器脚本,大多数时候都是在和浏览器打交道,因此合理组织并展现 html 标签是最为常见的工作.一般大家使用框架时,都会自带有一套视图组件和模板引擎. 我 ...
- POJ-1318(list.sort()输出不为字典序,map才是按字典序排列)
#include<iostream> #include<string> #include<list> #include<map> #include< ...
- Atitit. 衡量项目规模 ----包含的类的数量 .net java类库包含多少类 多少个api方法??
Atitit. 衡量项目规模 ----包含的类的数量 .net java类库包含多少类 多少个api方法?? 1 framework 4.5 (10万个api)1 2 Jdk8 57M1 3 Gi ...
- Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本
Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本 1. 框架选型的要求1 1.1. 文档多1 1.2. 跨平台1 2. html解析器特性:1 2.1. j ...
- 基于ffmpeg 直播推流和播放rtmp (IOS源码)
ios直播推流每秒能达到30帧,比安卓要强,视频采用软编码的话手机会发烫,得采用码编码,播放视频采用opengl渲染. ffmpeg初始化代码如下: int init_Code(int width, ...