bzoj 4260 REBXOR —— Trie树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4260
用 Trie 树可以找出前缀异或的最大值和后缀异或的最大值,拼起来即可;
注意要先加入一个0,表示区间左端点在 0 或右端点在 n+1;
竟然1A了!感动。
——然后发现3个月前做过!!!... https://www.cnblogs.com/Zinn/p/9301536.html
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int const xn=4e5+,mx=;
int n,cnt,a[xn],pr[xn],sc[xn],c[xn*mx][],bin[mx+];
int rd()
{
int ret=,f=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=; ch=getchar();}
while(ch>=''&&ch<='')ret=(ret<<)+(ret<<)+ch-'',ch=getchar();
return f?ret:-ret;
}
void init()
{
bin[]=;
for(int i=;i<=mx;i++)bin[i]=bin[i-]*;
}
void add(int x)
{
int nw=;
for(int i=mx;i>=;i--)
{
bool d=(x&bin[i]);
if(!c[nw][d])c[nw][d]=++cnt; nw=c[nw][d];
}
}
int query(int x)
{
int nw=,ret=;
for(int i=mx;i>=;i--)
{
bool d=!(x&bin[i]);
if(c[nw][d])nw=c[nw][d],ret+=bin[i];
else nw=c[nw][!d];
}
return ret;
}
int main()
{
n=rd(); init(); add();//
for(int i=,x,s=;i<=n;i++)
{
x=rd(); a[i]=x; s^=x;
pr[i]=max(pr[i-],query(s)); add(s);
}
cnt=; memset(c,,sizeof c); add();
for(int i=n,s=;i;i--)
{
s^=a[i];
sc[i]=max(sc[i+],query(s)); add(s);
}
int ans=;
for(int i=;i<n;i++)ans=max(ans,pr[i]+sc[i+]);
printf("%d\n",ans);
return ;
}
bzoj 4260 REBXOR —— Trie树的更多相关文章
- bzoj 4260: REBXOR Trie+乱搞
题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=4260 题解: 啊啊啊. 被这种SB题坑了半天. 求出异或前缀和后 从n到1枚举\(r_1 ...
- bzoj 4260 Codechef REBXOR——trie树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4260 一段的异或和就是两个前缀的异或和.正反扫两边,用trie树算每个位置为左/右端点时最大 ...
- 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 Trie树+贪心
[BZOJ4260]Codechef REBXOR Description Input 输入数据的第一行包含一个整数N,表示数组中的元素个数. 第二行包含N个整数A1,A2,…,AN. Output ...
- bzoj4260 REBXOR——Trie树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4260 对于每个位置,求一个前缀最大值和后缀最大值: 也就是从1到 i 的异或和要找前面某处的 ...
- 【bzoj4260】Codechef REBXOR Trie树
题目描述 输入 输入数据的第一行包含一个整数N,表示数组中的元素个数. 第二行包含N个整数A1,A2,…,AN. 输出 输出一行包含给定表达式可能的最大值. 样例输入 5 1 2 3 1 2 样例输出 ...
- 【bzoj4260】 Codechef REBXOR trie树
Input 输入数据的第一行包含一个整数N,表示数组中的元素个数. 第二行包含N个整数A1,A2,…,AN. Output 输出一行包含给定表达式可能的最大值. Sample Input ...
- BZOJ - 4260 01字典树+前后缀
题意:给定\(a[1...n]\),求\((a_i⊕a_i+1⊕...⊕a_j)+(a_p⊕a_{p+1}⊕...⊕a_{q})\)的最大值,其中\(1≤i≤j<p≤q≤n\) 前后缀最优解预处 ...
- 【BZOJ】4260: Codechef REBXOR【Trie树】【前后缀异或最大】
4260: Codechef REBXOR Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2218 Solved: 962[Submit][Stat ...
随机推荐
- pandaboard用wifi时打不开网页
不可以手动修改/etc/resolv.conf,因为重启会被自动清空(raspberry pi 可以) 修改 resolvconf服务的配置文件: /etc/resolvconf/resolv.con ...
- Ubuntu 16.04安装Jetty Web服务器
一.下载 http://www.eclipse.org/jetty/download.html 二.安装 tar -zxvf jetty-distribution-9.4.7.v20170914.ta ...
- 框架-数据库定义MD5加密
1.--定义Md5加密declare @pt_pwd varchar(50)set @pt_pwd = ''set @pt_pwd = substring(sys.fn_sqlvarbasetostr ...
- android开发教程之使用线程实现视图平滑滚动示例 改
package com.melonsapp.messenger.ui.popupuser; import android.os.Handler; import android.view.View; i ...
- Linux学习系列之Iptables
iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分.可以直接配置,也可以通过许多前端和图形界面配置. 语法 iptables(选项)(参数) 选项 -t<表&g ...
- webpack4.0入门以及使用
1. 安装webpack 先新建一个文件夹(demos),然后 npm init -y 新建一个package.json然后在当前目录执行webpack命令 webpack 模块未发现或者未找到src ...
- 统计nginx日志单IP访问请求数排名
下面是我截取一段nginx日志 /Jan/::: +] "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gec ...
- html-基本form元素---ShinePans
<html> <meta http-equiv="content-type" content="text/html;charset=UTF-8" ...
- subclassdlgitem
subclassdlgitem 该函数用来子类化一个控件. Subclass(子类化)是MFC中最常用的窗体技术之一.子类化完成两个工作:一是把窗体类对象attach到一个windows窗体实体中(即 ...
- iOS 各种编译错误汇总
1.error: macro names must be identifiers YourProject_prefix.pch 原因: 因为你弄脏了预处理器宏,在它处于<Multiple Val ...