JZOJ 3226. 【HBOI2013】ALO
题目
网上自己搜
解析
区间异或很容易想到可持久化字典树
但本题的关键是如何高效率求出以某个数为区间最大值时这个区间的范围
依题我们知道区间最长可到比它第二大的位置(开区间)
所以我们如果能找到每个数比他大的
这个问题就迎刃而解了
我们可以排序后从小到大算答案
用双向链表记录前一个比他大的和后一个比他大的
算完它就把他删掉
并且修改之后的链表指向
\(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的更多相关文章
- JZOJ 3223. 【HBOI2013】Ede的新背包问题
3223. [HBOI2013]Ede的新背包问题 (Standard IO) Time Limits: 2000 ms Memory Limits: 262144 KB Detailed Lim ...
- 【BZOJ3166】ALO(主席树)
[BZOJ3166]ALO(主席树) 题面 权限题qwq 资磁洛谷 题解 用一个\(set\)求出左右侧比这个数大的第\(2\)个数, 然后用可持久化\(Trie\)算一下就好啦 #include&l ...
- JZOJ 2137. 【GDKOI2004】城市统计 (Standard IO)
2137. [GDKOI2004]城市统计 (Standard IO) Time Limits: 1000 ms Memory Limits: 128000 KB Detailed Limits ...
- JZOJ 2136. 【GDKOI2004】汉诺塔
2136. [GDKOI2004]汉诺塔 (Standard IO) Time Limits: 3000 ms Memory Limits: 128000 KB Detailed Limits ...
- JZOJ 1154. 【GDOI2003】购物
1154. [GDOI2003]购物 (Standard IO) Time Limits: 1000 ms Memory Limits: 65536 KB Description GDOI商场推出优惠 ...
- 【BZOJ】【3166】【HEOI2013】Alo
可持久化Trie+set Orz zyf…… 搞区间中次大值不好搞,那么我们就反过来,找一个数,然后看它在哪些区间里是次大值…… (然而事实上我们并不用真的把这个区间具体是什么找见,只要知道它可以跟哪 ...
- [jzoj]1115.【HNOI2008】GT考试
Link https://jzoj.net/senior/#main/show/1115 Description 申准备报名参加GT考试,准考证号为n位数X1X2X3...Xn-1Xn(0<=X ...
- [jzoj]2538.【NOIP2009TG】Hankson 的趣味题
Link https://jzoj.net/senior/#main/show/2538 Description Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫H ...
- [jzoj]3760.【BJOI2014】Euler
Link https://jzoj.net/senior/#main/show/3760 Description 欧拉函数 φ(n) 定义为不超过正整数 n 并且与 n 互素的整数的数目. 可以证 ...
- JZOJ 1667【AHOI2009】中国象棋——dp
题目:https://jzoj.net/senior/#main/show/1667 只注重0.1.2的列有多少个,不注重它们的位置,就能记录了. #include<iostream> # ...
随机推荐
- Promise基础知识
Promise 1.Promise的前置小知识 进程(厂房) 程序的运行环境 线程(工人) 线程是实际进行运算的东西 同步 通常情况代码都是自上向下一行一行执行的 前边的代码不执行后边的代码也不会执行 ...
- 【JUC】信号量Semaphore详解
欢迎关注专栏[JAVA并发] 欢迎关注个人公众号-- JAVA旭阳 前言 大家应该都用过synchronized 关键字加锁,用来保证某个时刻只允许一个线程运行.那么如果控制某个时刻允许指定数量的线程 ...
- org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException
1.问题概述 将一个 springboot 项目打成 Jar 包后,在本地使用 java -jar 命令启动服务,服务能启动成功,但是会有如下报错信息. 说明: 配置文件为外置配置文件,与 jar 处 ...
- .net6制作让同事不能上网的arp欺骗工具
摘一段来自网上的arp欺诈解释:ARP欺骗(ARP spoofing),又称ARP毒化(ARP poisoning,网络上多译为ARP病毒)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技 ...
- nuxt.js框架 如何打包 build
nuxt脚手架开发好项目后怎么打包 以下是脚手架的package.json部分代码 "scripts": { "dev": "cross-env NO ...
- 5、基于EasyExcel的导入导出
一.Apach POI处理Excel的方式: 传统Excel操作或者解析都是利用Apach POI进行操作,POI中处理Excel有以下几种方式: 1.HSSFWorkbook: HSSFWorkbo ...
- 分享.net framework4.0无法安装的几种处理方案.
[关于.net framework4.0安装失败]-------------)方案1:http://www.win7xtzj.com/win10jiaocheng/39834.html 关键词: -- ...
- OI是什么?
从OI谈起 提到OI,也许很多人并不清楚这是怎么一回事.对于在学校就学习过数学.物理.化学和生物的同学们来说,"国际五项学科奥林匹克竞赛"中的这四门是相当熟悉了(相对OI来说).而 ...
- WPF中使用WebView2控件
目录 WebView2简介 概述 优势 支持的运行时平台 进程模型 基本使用 安装WebView2运行时 安装WebView2Sdk 打开一个网页 导航事件 打开一个网页的过程 更改url的过程 空u ...
- 最新编程语言排名Python、C、Java 和 C++ 已形成四足鼎立之势
引言 技术的千变万化,都是有迹可循的,随着最新的 TIOBE 十月编程语言榜单重磅发布,不同开发语言的排名和发展趋势也随之揭晓! 四大编程语言不断增强其主导地位 曾几何时,编程语言界中 Java.C. ...