[LUOGU]P4098[HEOI2013]ALO
BZOJ上的权限题,流下了贫穷的泪水。。。
可持久化trie的题。
一开始zz了,看错了题,以为是要把所有的宝石缩起来,后来仔细一看好像只缩一次。。。昨天刷了一晚上的语文病句题白做了。。。
这样的话就可以枚举以每个点为次大值,求出可以异或的区间,用可持久化trie做。维护可以异或的区间可以用set求。
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <set>
#include <cstring>
using namespace std;
int n,a[50005],b[50005],k,rt[50005*32],ch[50005*32][2],siz[50005*32],tot;
set<int>s;set<int>::iterator it1,it2;
bool cmp(int x,int y) {return a[x]>a[y];}
void insert(int &k,int pre,int val) {
k=++tot;int tmp=k;
for(int i=30; ~i; i--) {
bool tag=val&(1<<i);
ch[tmp][0]=ch[pre][0],ch[tmp][1]=ch[pre][1];
pre=ch[pre][tag],tmp=ch[tmp][tag]=++tot;
siz[tmp]=siz[pre]+1;
}
}
int query(int u,int v,int val) {
int tmp=0;
for(int i=30; ~i; i--) {
bool tag=val&(1<<i);
if(siz[ch[v][tag^1]]-siz[ch[u][tag^1]]>0) tmp|=(1<<i),u=ch[u][tag^1],v=ch[v][tag^1];
else u=ch[u][tag],v=ch[v][tag];
}
return tmp;
}
int ans=-1;
int main() {
scanf("%d",&n);
for(int i=1; i<=n; i++) scanf("%d",&a[i]),b[i]=i,insert(rt[i],rt[i-1],a[i]);
sort(b+1,b+1+n,cmp);
s.insert(n+1),s.insert(n+2),s.insert(-1),s.insert(-2);
for(int i=1,l,r; i<=n; i++) {
it1=s.lower_bound(b[i]);
it2=it1;
l=*--(--it1)+1;
r=*(++it2)-1;l=max(l,1),r=min(r,n);
s.insert(b[i]);
if(l>r) continue;
ans=max(ans,query(rt[l-1],rt[r],a[b[i]]));
}
cout<<ans;
}
[LUOGU]P4098[HEOI2013]ALO的更多相关文章
- P4098 [HEOI2013]ALO
最近这个家伙去哪了,为啥一直不更博客了呢?原来他被老师逼迫去补了一周的文化课,以至于不会把班里的平均分拉掉太多.好了,我们来看下面这道题目: P4098 [HEOI2013]ALO 题目描述 Welc ...
- P4098 [HEOI2013]ALO 可持久化01Trie
$ \color{#0066ff}{ 题目描述 }$ Welcome to ALO ( Arithmetic and Logistic Online).这是一个 VR MMORPG, 如名字所见,到处 ...
- BZOJ3166: [Heoi2013]Alo
3166: [Heoi2013]Alo Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 394 Solved: 204[Submit][Status] ...
- bzoj 3166 [Heoi2013]Alo 可持久化Trie
3166: [Heoi2013]Alo Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 1227 Solved: 569[Submit][Status ...
- BZOJ 3166: [Heoi2013]Alo
3166: [Heoi2013]Alo Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 923 Solved: 437[Submit][Status] ...
- [BZOJ3166][Heoi2013]Alo 可持久化Trie树
3166: [Heoi2013]Alo Time Limit: 20 Sec Memory Limit: 256 MB DescriptionWelcome to ALO ( Arithmetic a ...
- 【BZOJ3166】[Heoi2013]Alo 可持久化Trie树+set
[BZOJ3166][Heoi2013]Alo Description Welcome to ALO ( Arithmetic and Logistic Online).这是一个VR MMORPG , ...
- Bzoj 3166 [Heoi2013] Alo 题解
3166: [Heoi2013]Alo Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 1118 Solved: 518[Submit][Status ...
- 暴力 【p4098】[HEOI2013]ALO
Description Welcome to ALO ( Arithmetic and Logistic Online).这是一个 VR MMORPG, 如名字所见,到处充满了数学的谜题 现在你拥有 ...
随机推荐
- installed jre指向jdk而非jre位置&
1.eclipse菜单 - Window - Preferences- Java - Installed JREs 将配置的JRE定位到JDK,例如JRE home:D:\Program Files ...
- android蓝牙协议名词解释 OPP HFP HDP A2DP PAN
各种蓝牙协议的全称: OPP:对象存储规范(Object Push Profile),最为常见的,文件的传输都是使用此协议. HFP:(Hands-free Profile),让蓝牙设备能够控制电话, ...
- 经验总结18--EF改动关系,多对多
EF改动关系让我费事蛮多时间.能查的资料少,网上试了非常多方法都不正确. 最后还是自己研究出来了.在这里和大家分享下,有更好的方法也能够分享下. 首先说说我一般做改动功能时,前台传參数,后台使用对象接 ...
- Ubuntu安装及ubuntu系统使用菜岛教程
Ubuntu是一款广受欢迎的开源Linux发行版,和其他Linux操作系统相比,Ubuntu非常易用,和Windows相容性很好,非常适合Windows用户的迁移,在其八年的成长过程中已经获得了两千多 ...
- 安装eclipse maven插件m2eclipse No repository found containing
m2eclipse插件是Eclipse的一款Maven插件. 安装m2eclipse插件的步骤例如以下: 启动Eclipse,在菜单条中选择Help,然后选择Install New Software- ...
- keyboard键盘demo
main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and ...
- Linux 获取设备树源文件(DTS)里的资源【转】
本文转载自:http://blog.csdn.net/keleming1/article/details/51036000 http://www.cnblogs.com/dyllove98/archi ...
- eclipse中打字中文突然变成繁体
eclipse中打字中文突然变成繁体 在用eclipse做android项目的时候,发现打出来的字全部是繁体,而且QQ等其他位置又是简体. 原因:eclipse的快捷点ctrl+alt+f(forma ...
- 如何提升SQL语句的查询性能
在对数据库进行操作时,如果SQL语句书写不当,对程序的效率会造成很大影响. 提高SQL效率可以从一下几个方面入手: 1,数据库设计与规划 Primary Key字段的长度尽量小,能用small int ...
- python里使用reduce()函数
reduce()函数在库functools里,如果要使用它,要从这个库里导入.reduce函数与map函数有不一样地方,map操作是并行操作,reduce函数是把多个参数合并的操作,也就是从多个条件简 ...