链表这个东西非常好用啊 ~

code:

#include <bits/stdc++.h>
#define N 50010
#define inf 2000400000
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
int n,ans,cnt;
int a[N],t[N*35],ch[N*35][2],pre[N],nxt[N],rt[N];
pair<int,int>b[N];
void insert(int x,int pos)
{
int now=rt[pos]=++cnt, last=rt[pos-1];
for(int i=30;i>=0;--i)
{
int o=(x>>i)&1;
ch[now][o^1]=ch[last][o^1];
ch[now][o]=++cnt;
t[ch[now][o]]=t[ch[last][o]]+1;
now=ch[now][o];
last=ch[last][o];
}
}
int query(int sum,int l,int r)
{
--l;
int now=rt[l],last=rt[r],ret=0;
for(int i=30;i>=0;--i)
{
int o=(sum>>i)&1;
if(t[ch[last][o^1]]>t[ch[now][o^1]])
{
ret+=(1<<i);
now=ch[now][o^1];
last=ch[last][o^1];
}
else
{
now=ch[now][o];
last=ch[last][o];
}
}
return ret;
}
int main()
{
// setIO("input");
int i,j,n;
scanf("%d",&n);
int fir=0,last=n+1;
a[fir]=a[last]=inf;
for(i=1;i<=n;++i)
{
pre[i]=i-1, nxt[i]=i+1;
scanf("%d",&a[i]), b[i]=make_pair(a[i],i), insert(a[i],i);
}
sort(b+1,b+1+n);
for(i=1;i<=n;++i)
{
int x=b[i].second;
int l=pre[x],r=nxt[x];
nxt[l]=r,pre[r]=l;
if(l!=fir) ans=max(ans, query(a[x],pre[l]+1,r-1));
if(r!=last) ans=max(ans, query(a[x],l+1,nxt[r]-1));
}
printf("%d\n",ans);
return 0;
}

  

BZOJ 3166: [Heoi2013]Alo 链表+可持久化trie的更多相关文章

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

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

  2. BZOJ 3166: [Heoi2013]Alo

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

  3. Bzoj 3166 [Heoi2013] Alo 题解

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

  4. BZOJ 3166 HEOI2013 ALO 可持久化trie+st表

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3166(洛谷上也有) 题意概述: 给出一个序列,对于一个区间,其权值为区间中的次大值亦或区 ...

  5. BZOJ 3166 [HEOI2013]Alo (可持久化01Trie+链表)

    题目大意:给你一个长度为$n$的序列,让你找出一段子序列,求其中的 次大值 异或 序列里一个数 能得到的最大值 先对序列建出可持久化$Trie$ 按元素的值从小到大遍历,设当前元素的位置是i,找出它左 ...

  6. [HEOI2013]ALO(可持久化Trie+链表)

    你永远不会相信一个快AFO的选手不会可持久化Trie. 其实异或粽子那题可以用可持久化Trie做,不过我还是没用,用的一般的Trie(其实可持久化是多此一举),于是到现在还是不会可持久化Trie. 这 ...

  7. BZOJ3166 [Heoi2013]Alo 【可持久化trie树 + 二分 + ST表】

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

  8. 【BZOJ2741】【块状链表+可持久化trie】FOTILE模拟赛L

    Description FOTILE得到了一个长为N的序列A,为了拯救地球,他希望知道某些区间内的最大的连续XOR和. 即对于一个询问,你需要求出max(Ai xor Ai+1 xor Ai+2 .. ...

  9. bzoj 4103: 异或运算 可持久化Trie

    题目大意: 给定长度为n的数列X={x1,x2,...,xn}和长度为m的数列Y={y1,y2,...,ym},令矩阵A中第i行第j列的值\(A_{ij} = x_i \text{ xor } y_j ...

随机推荐

  1. SonarQube执行代码分析时,报错ERROR: Unable to create symbol table for : /**/*.java java.lang.IllegalArgumentException: Unsupported class file major version 55

    若要转载本文,请务必声明出处:https://www.cnblogs.com/zhongyuanzhao000/p/11686633.html 起因: 最近正在尝试SonarQube的简单使用,但是当 ...

  2. 1、Linux安装前的准备

    1.硬盘和分区 1.1  Linux中如何表示硬盘和分区 硬盘划分为 主分区.扩展分区和逻辑分区三部分. 主分区只有四个: 扩展分区可以看成是一个特殊的主分区类型,在扩展分区中还可以建立相应的逻辑分区 ...

  3. easyUi——datetimebox绑定数据失效

    在做easy-ui时候,绑定数据不管在怎么写,都绑定不上去,最后发现是因为 标签的ID没有写,尴尬了,记录一下,防止后期出错. ui代码 <script type="text/java ...

  4. 虚拟Dom详解 - (一)

    随着Vue和React的风声水起,伴随着诸多框架的成长,虚拟DOM渐渐成了我们经常议论和讨论的话题.什么是虚拟DOM,虚拟DOM是如何渲染的,那么Vue的虚拟Dom和React的虚拟DOM到底有什么区 ...

  5. React Native 开发豆瓣评分(七)首页组件开发

    首页内容拆分 看效果图,首页由热门影院.豆瓣热门.热门影视等列表组成,每个列表又由头加横向滑动的 电影海报列表构成. 所以可以先把页面的电影海报.评分.列表头做成组件,然后在使用 ScrollView ...

  6. 代码实现排列组合【Java】

    一.代码实现 package zhen; import java.util.Arrays; public class Arrangement { /** * 计算阶乘数,即n! = n * (n-1) ...

  7. webdriver切换frame的方法

    iframe: iframe 就是一个特殊的html 元素, 它在原来的html 范围内,开辟了一个新的HTML. iframe 元素会创建包含另外一个文档的内联框架(即行内框架) 理解:网页嵌套网页 ...

  8. Cypress自动化环境搭建

    1.Cypress 下载: 官网下载,下载后直接解压即可,解压后便可单机exe文件打开 Ps:直接打开exe是会报错找不到json文件的,所以还要安装依赖环境 运行cypress项目前,必须vue-c ...

  9. Codeforces B. Too Easy Problems

    题目描述: time limit per test 2 seconds memory limit per test 256 megabytes input standard input output ...

  10. python assert 在正式产品里禁用的手法 直接-O即可

    How do I disable assertions in Python? There are multiple approaches that affect a single process, t ...