题目

网上自己搜

解析

区间异或很容易想到可持久化字典树

但本题的关键是如何高效率求出以某个数为区间最大值时这个区间的范围

依题我们知道区间最长可到比它第二大的位置(开区间)

所以我们如果能找到每个数比他大的

这个问题就迎刃而解了

我们可以排序后从小到大算答案

用双向链表记录前一个比他大的和后一个比他大的

算完它就把他删掉

并且修改之后的链表指向

\(Code\)

#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std; const int N = 5e4 + 5;
int n , a[N] , id[N] , ans , nxt[N] , pre[N] , rt[N] , size , t[30 * N][2] , sum[60 * N]; inline bool cmp(int x , int y){return a[x] < a[y];} inline void update(int u , int v , int w)
{
for(register int i = 30; i >= 0; i--)
{
int c = (w >> i) & 1;
sum[u] = sum[v] + 1;
t[u][c ^ 1] = t[v][c ^ 1];
t[u][c] = ++size;
u = t[u][c] , v = t[v][c];
}
sum[u] = sum[v] + 1;
} inline int query(int u , int v , int w)
{
int res = 0;
for(register int i = 30; i >= 0; i--)
{
int c = (w >> i) & 1 , x = sum[t[v][c ^ 1]] - sum[t[u][c ^ 1]];
if (x) res += 1 << i , u = t[u][c ^ 1] , v = t[v][c ^ 1];
else u = t[u][c] , v = t[v][c];
}
return res;
} int main()
{
scanf("%d" , &n);
for(register int i = 1; i <= n; i++) scanf("%d" , &a[i]) , id[i] = i , pre[i] = i - 1 , nxt[i] = i + 1;
nxt[n + 1] = n + 1;
for(register int i = 1; i <= n; i++) rt[i] = ++size , update(rt[i] , rt[i - 1] , a[i]);
sort(id + 1 , id + n + 1 , cmp);
for(register int i = 1; i <= n; i++)
{
int now = id[i] , l = max(1 , pre[pre[now]] + 1) , r = min(n , nxt[nxt[now]] - 1);
ans = max(ans , query(rt[l - 1] , rt[r] , a[now]));
pre[nxt[now]] = pre[now] , nxt[pre[now]] = nxt[now];
}
printf("%d" , ans);
}

JZOJ 3226. 【HBOI2013】ALO的更多相关文章

  1. JZOJ 3223. 【HBOI2013】Ede的新背包问题

    3223. [HBOI2013]Ede的新背包问题 (Standard IO) Time Limits: 2000 ms  Memory Limits: 262144 KB  Detailed Lim ...

  2. 【BZOJ3166】ALO(主席树)

    [BZOJ3166]ALO(主席树) 题面 权限题qwq 资磁洛谷 题解 用一个\(set\)求出左右侧比这个数大的第\(2\)个数, 然后用可持久化\(Trie\)算一下就好啦 #include&l ...

  3. JZOJ 2137. 【GDKOI2004】城市统计 (Standard IO)

    2137. [GDKOI2004]城市统计 (Standard IO) Time Limits: 1000 ms  Memory Limits: 128000 KB  Detailed Limits  ...

  4. JZOJ 2136. 【GDKOI2004】汉诺塔

    2136. [GDKOI2004]汉诺塔 (Standard IO) Time Limits: 3000 ms  Memory Limits: 128000 KB  Detailed Limits   ...

  5. JZOJ 1154. 【GDOI2003】购物

    1154. [GDOI2003]购物 (Standard IO) Time Limits: 1000 ms Memory Limits: 65536 KB Description GDOI商场推出优惠 ...

  6. 【BZOJ】【3166】【HEOI2013】Alo

    可持久化Trie+set Orz zyf…… 搞区间中次大值不好搞,那么我们就反过来,找一个数,然后看它在哪些区间里是次大值…… (然而事实上我们并不用真的把这个区间具体是什么找见,只要知道它可以跟哪 ...

  7. [jzoj]1115.【HNOI2008】GT考试

    Link https://jzoj.net/senior/#main/show/1115 Description 申准备报名参加GT考试,准考证号为n位数X1X2X3...Xn-1Xn(0<=X ...

  8. [jzoj]2538.【NOIP2009TG】Hankson 的趣味题

    Link https://jzoj.net/senior/#main/show/2538 Description Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫H ...

  9. [jzoj]3760.【BJOI2014】Euler

    Link https://jzoj.net/senior/#main/show/3760 Description 欧拉函数  φ(n)  定义为不超过正整数 n 并且与 n 互素的整数的数目. 可以证 ...

  10. JZOJ 1667【AHOI2009】中国象棋——dp

    题目:https://jzoj.net/senior/#main/show/1667 只注重0.1.2的列有多少个,不注重它们的位置,就能记录了. #include<iostream> # ...

随机推荐

  1. elasticsearch的教程

    简介: 假期自学了elasticsearch搭建与使用,写个博客记录一下 另外我电脑是linux,我懒得再说windows各种配置方法了,不过都是大同小异 1.软件的简介 ElasticSearch是 ...

  2. 微信小程序实战,基于vue2实现瀑布流

    1.什么是瀑布流呢? 瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部. 瀑布流对于图片的展现, ...

  3. WeakHashMap 和 HashMap 的区别是什么,何时使用?

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 前言 大家好,我是小彭. 在之前的文章里,我们聊到了 Java 标准库中 HashMap 与 LinkedH ...

  4. [.NET学习] EFCore学习之旅 -3 一些其他的迁移命令

    1.Update-DataBase  xxx 概述:将数据库回滚到某个版本. 1.首先创建一个表 Dog 2.生成迁移 Add-Migration CreateDogTable 并更新到数据库 Upd ...

  5. Windows10下python3和python2同时安装(二)python2.exe、python3.exe和pip2、pip3设置

    Windows10下python3和python2同时安装(二) python2.exe.python3.exe和pip2.pip3设置 说明:安装安装python3和python2请参考本系列教程( ...

  6. CTF中RSA常见类型解法

    Python脚本 #十六进制转ASCII编码 import binascii print(binascii.unhexlify(hex(m)[2:])) #rsa import gmpy2 phi = ...

  7. 时间片差分调度法-充分利用MCU的资源

    前言 通过该篇学习了嵌入式的任务调度(即时间片论法)后,了解到通过以1ms为调度时间单位轮询判断是否需要执行函数任务,那么下面介绍如何基于时间片论法的任务调度模式充分利用MCU的资源,姑且先称这种方式 ...

  8. vue 实现一键复制功能(两种方式)

    方法 一 : <div class="mask-cont"> <p><input id="input" /></p&g ...

  9. [python] 向量检索库Faiss使用指北

    Faiss是一个由facebook开发以用于高效相似性搜索和密集向量聚类的库.它能够在任意大小的向量集中进行搜索.它还包含用于评估和参数调整的支持代码.Faiss是用C++编写的,带有Python的完 ...

  10. python进阶之路21 正则应用 第三方模块之requests模块 openpyxl模块 简易爬虫(pandas)

    作业讲解 """ 网络爬虫没有我们现在接触的那么简单 有时候页面数据无法直接拷贝获取 有时候页面还存在防爬机制 弄不好ip会被短暂拉黑 """ ...