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的更多相关文章

  1. P4098 [HEOI2013]ALO

    最近这个家伙去哪了,为啥一直不更博客了呢?原来他被老师逼迫去补了一周的文化课,以至于不会把班里的平均分拉掉太多.好了,我们来看下面这道题目: P4098 [HEOI2013]ALO 题目描述 Welc ...

  2. P4098 [HEOI2013]ALO 可持久化01Trie

    $ \color{#0066ff}{ 题目描述 }$ Welcome to ALO ( Arithmetic and Logistic Online).这是一个 VR MMORPG, 如名字所见,到处 ...

  3. BZOJ3166: [Heoi2013]Alo

    3166: [Heoi2013]Alo Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 394  Solved: 204[Submit][Status] ...

  4. bzoj 3166 [Heoi2013]Alo 可持久化Trie

    3166: [Heoi2013]Alo Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1227  Solved: 569[Submit][Status ...

  5. BZOJ 3166: [Heoi2013]Alo

    3166: [Heoi2013]Alo Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 923  Solved: 437[Submit][Status] ...

  6. [BZOJ3166][Heoi2013]Alo 可持久化Trie树

    3166: [Heoi2013]Alo Time Limit: 20 Sec Memory Limit: 256 MB DescriptionWelcome to ALO ( Arithmetic a ...

  7. 【BZOJ3166】[Heoi2013]Alo 可持久化Trie树+set

    [BZOJ3166][Heoi2013]Alo Description Welcome to ALO ( Arithmetic and Logistic Online).这是一个VR MMORPG , ...

  8. Bzoj 3166 [Heoi2013] Alo 题解

    3166: [Heoi2013]Alo Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1118  Solved: 518[Submit][Status ...

  9. 暴力 【p4098】[HEOI2013]ALO

    Description Welcome to ALO ( Arithmetic and Logistic Online).这是一个 VR MMORPG, 如名字所见,到处充满了数学的谜题 现在你拥有 ...

随机推荐

  1. 性能优化——mysql数据库

    一 mysql经常使用命令 1. 打开日志 1) show global variables like "%genera%"; 2)set global general_log=o ...

  2. Java设计模式菜鸟系列(十五)建造者模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39863125 建造者模式(Builder):工厂类模式提供的是创建单个类的模式.而建造者模 ...

  3. 输入url发生了什么--前端所有知识

    面试经常会问到的一个问题,这个问题舒展开来,其实包含了前端(一些后端)几乎所有的知识.梳理一下,备忘.包含了一些面经中常问的问题. 有时间待续

  4. Grace Hopper

    葛丽丝·穆雷·霍普(英语:Grace Murray Hopper,1906年12月9日-1992年1月1日),本姓穆雷(Murray),霍普(Hopper)为夫姓,生于美国纽约州纽约市,美国海军准将及 ...

  5. JS遮罩层

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. ajax跨域POST时执行OPTIONS请求服务端返回403forbidden的解决方法

    ajax访问服务端restful api时,由于contentType类型的原因,浏览器会先发送OPTIONS请求. 本人服务端用的是spring mvc框架,web服务器用的是tomcat的,以下给 ...

  7. net快速写入/读取大量数据Postgresql

    Postgresql快速写入/读取大量数据 http://www.cnblogs.com/podolski/p/7152144.html 环境及测试 使用.net驱动npgsql连接post数据库.配 ...

  8. python 数据的基本类型(字符串)

    python 基础 ascii:字母,数字,特殊字符:1个字节(byte) 8个字位(bit)unicode: 16位两个字节,升级32个字节 4个字位utf-8:最少一个字节 8个表示. 英文 8字 ...

  9. selenium 最大化浏览器是解决浏览器和驱动不匹配的方法如下

    那么要想selenium成功的操作chrome浏览器需要经历如下步骤: 1.下载ChromeDriver驱动包(下载地址: http://chromedriver.storage.googleapis ...

  10. C# 常用代码片段

    一.从控制台读取东西代码片断: using System; class TestReadConsole { public static void Main() { Console.Write(Ente ...