题目

网上自己搜

解析

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

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

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

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

这个问题就迎刃而解了

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

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

算完它就把他删掉

并且修改之后的链表指向

\(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. MySQL进阶实战3,mysql索引详解,上篇

    一.索引 索引是存储引擎用于快速查找记录的一种数据结构.我觉得数据库中最重要的知识点,就是索引. 存储引擎以不同的方式使用B-Tree索引,性能也各有不同,各有优劣.例如MyISAM使用前缀压缩技术使 ...

  2. 1.5 HDFS分布式文件系统-hadoop-最全最完整的保姆级的java大数据学习资料

    目录 1.5 HDFS分布式文件系统 1.5.1 HDFS 简介 1.5.2 HDFS的重要概念 1.5.3 HDFS架构 1.5 HDFS分布式文件系统 1.5.1 HDFS 简介 HDFS(全称: ...

  3. meta标签补充

    shrink-to-fit=no 使用"width=device-width"会导致页面按比例缩小,以适应超出视口边界的内容. 使用将"shrink-to-fit=no& ...

  4. Dart开发服务端,我是不是发烧(骚)了?

    前言 最近一段时间,我和我的团队开发了两个 APP. 客户端方面采用了 Flutter,方便跨平台. 服务端方面剑走偏锋,没有采用 php, pythod, java之类的,而是采用了与 Flutte ...

  5. 《MySQL必知必会》之快速入门存储过程

    使用存储过程 本章介绍什么是存储过程,为什么使用.如何使用,并介绍如何创建和使用存储过程的基本语法 存储过程 在实际应用中,往往需要执行多个表的多条sql语句 存储过程就是为以后的使用而保存的一条或者 ...

  6. HTTP协议图文简述--HTTP/HTTPS/HTTP2

    01.准备 1.1.先了解下网络模型/TCP HTTP 连接是建立在 TCP* 协议之上的,其数据传输功能是由TCP完成的,那TCP又是什么呢? TCP 是一个单纯用来建立通信连接,并传输数据的基础协 ...

  7. C语言两结构体之间的成员互换

    今天在写一个通讯录实现程序的时候,遇到个让我突然卡壳的问题,不知道怎么进行两个结构体之间的成员互换......结构体成员有"姓名","性别","年龄& ...

  8. 问一个 Windows 窗口的 Capture 问题

    好久没写了,上来先问一个问题...羞射... 有 A.B 两个窗口,A 是 B 的 Owner,B 不激活不抢焦点.在 B 的 WM_LBUTTONDOWN 的时候,设置 A 窗口为 Capture: ...

  9. day04-视图和视图解析器

    视图和视图解析器 1.基本介绍 在SpringMVC中的目标方法,最终返回的都是一个视图(有各种视图) 注意,这里的视图是一个类对象,不是一个页面!! 返回的视图都会由一个视图解析器来处理(视图解析器 ...

  10. python学习第四周总结

    异常常见类型 异常处理语法结构 异常补充处理 异常处理实战应用 生成器对象 自定义生成器range()功能 yield冷门用法 生成器表达式 模块简介 模块的分类 导入模块的两种句式 导入模块补充说明 ...