博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 4260: Codechef REBXOR (01 Trie)
阅读量:5356 次
发布时间:2019-06-15

本文共 1710 字,大约阅读时间需要 5 分钟。

链接: https://www.lydsy.com/JudgeOnline/problem.php?id=4260

题面:

4260: Codechef REBXOR

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 2596  Solved: 1142
[][][]

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。
 
 
前缀和+后缀和维护,用dp[i] 代表从1-i区间异或和最大的值
 
实现代码;
#include
using namespace std;#define ll long longconst int M = 4e5+10;int tot;int ch[32*M][2];ll val[32*M],a[M],pre[M],nex[M],dp[M];void init(){ tot = 1; ch[0][0] = ch[0][1] = 0;}void ins(ll x){ int u = 0; for(int i = 32;i >= 0;i --){ int v = (x>>i)&1; if(!ch[u][v]){ ch[tot][0] = ch[tot][1] = 0; val[tot] = 0; ch[u][v] = tot++; } u = ch[u][v]; } val[u] = x;}ll query(ll x){ int u = 0; for(int i = 32;i >= 0;i --){ int v = (x>>i)&1; if(ch[u][v^1]) u = ch[u][v^1]; else u = ch[u][v]; } return x^val[u];}int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin>>n; init(); for(int i = 1;i <= n;i ++){ cin>>a[i]; } pre[0] = nex[n+1] = dp[0] = 0; for(int i = 1;i <= n;i ++) pre[i] = pre[i-1]^a[i]; for(int i = n;i >= 1;i --) nex[i] = nex[i+1]^a[i]; ins(pre[0]); for(int i = 1;i <= n;i ++){ dp[i] = max(dp[i-1],query(pre[i])); ins(pre[i]); } init(); ins(nex[n+1]); ll ans = 0; for(int i = n;i >= 1;i --){ ans = max(ans,dp[i-1]+query(nex[i])); ins(nex[i]); } cout<
<

 

转载于:https://www.cnblogs.com/kls123/p/10724211.html

你可能感兴趣的文章
OpenLayers绘制图形
查看>>
tp5集合h5 wap和公众号支付
查看>>
Flutter学习笔记(一)
查看>>
iOS10 国行iPhone联网权限问题处理
查看>>
洛谷 P1991 无线通讯网
查看>>
Codeforces Round #178 (Div. 2) B. Shaass and Bookshelf 【动态规划】0-1背包
查看>>
SparkStreaming 源码分析
查看>>
【算法】—— 随机音乐的播放算法
查看>>
mysql asyn 示例
查看>>
数据库第1,2,3范式学习
查看>>
《Linux内核设计与实现》第四章学习笔记
查看>>
使用iperf测试网络性能
查看>>
图片的显示隐藏(两张图片,默认的时候显示第一张,点击的时候显示另一张)...
查看>>
Docker 安装MySQL5.7(三)
查看>>
python 模块 来了 (调包侠 修炼手册一)
查看>>
关于CSS的使用方式
查看>>
分析语句执行步骤并对排出耗时比较多的语句
查看>>
原生JS轮播-各种效果的极简实现
查看>>
计数器方法使用?
查看>>
带你全面了解高级 Java 面试中需要掌握的 JVM 知识点
查看>>