题意:

找到一个区间,设kkk位区间次大值,求max(k⊕a[i]∣l≤i≤r)max(k \oplus a[i]|l\le i \le r)max(k⊕a[i]∣l≤i≤r)

题解:

首先考虑某个值为次大值的区间,有且仅有一个值比他大,这个可以排序+set求出。
然后求区间与一个值的异或最大值就是可持久化trie经典题了。
code:

#include<set>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n;
struct node{int a,num;}a[50010];
bool cmp(node a,node b) {return a.a>b.a;}
struct trnode{int lc,rc,c;}tr[3000010];int tot=0,root[50010];
void change(int &x,int k,int d)
{tr[++tot]=tr[x];x=tot;if(k==-1) {tr[x].c++;return;}int c=(d&(1<<k))?1:0;if(!c) change(tr[x].lc,k-1,d);else change(tr[x].rc,k-1,d);tr[x].c=tr[tr[x].lc].c+tr[tr[x].rc].c;
}
set<int> s;
int ans=0;
void solve(int d,int l,int r)
{//printf("%d %d %d\n",d,l,r);int s=0;int x1=root[l-1],x2=root[r];for(int i=30;i>=0;i--){s<<=1;int c=((1<<i)&d)?1:0;int lcc=tr[tr[x2].lc].c-tr[tr[x1].lc].c;int rcc=tr[tr[x2].rc].c-tr[tr[x1].rc].c;//printf("c:%d %d\n",c,rcc);//if(s) printf("put:%d %d %d\n",i,lcc,rcc);if(c){if(lcc) x1=tr[x1].lc,x2=tr[x2].lc;else x1=tr[x1].rc,x2=tr[x2].rc,s++;}else{if(rcc) x1=tr[x1].rc,x2=tr[x2].rc,s++;else x1=tr[x1].lc,x2=tr[x2].lc;}}//printf("s:%d\n",s);ans=max(ans,s^d);
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i].a);a[i].num=i;root[i]=root[i-1];change(root[i],30,a[i].a);}sort(a+1,a+n+1,cmp);s.insert(0);s.insert(n+1);s.insert(a[1].num);for(int i=2;i<=n;i++){//printf("a:%d %d\n",a[i].a,a[i].num);int l=*(--s.lower_bound(a[i].num)),r=*s.lower_bound(a[i].num);//printf("l r:%d %d\n",l,r);if(l!=0) solve(a[i].a,*(--(--s.lower_bound(a[i].num)))+1,r-1);if(r!=n+1) solve(a[i].a,l+1,(*(++s.upper_bound(a[i].num)))-1);s.insert(a[i].num);}printf("%d",ans);
}

3166: [Heoi2013]Alo相关推荐

  1. BZOJ #3166. [Heoi2013]Alo(可持久化trie树+set)

    #3166. [Heoi2013]Alo description solution code BZOJ3166 description Welcome to ALO ( Arithmetic and ...

  2. Bzoj 3166 [Heoi2013] Alo 题解

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

  3. 洛谷P4098 [HEOI2013]ALO

    题目链接 [HEOI2013]ALO 题目描述 现在你拥有 n 颗宝石,每颗宝石有一个能量密度,记为 ai,这些宝石的能量 密度两两不同.现在你可以选取连续的一些宝石(必须多于一个)进行融合,设 为 ...

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

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

  5. bzoj3166: [Heoi2013]Alo

    链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3166 题意:中文题. 分析:枚举每个元素,将它当成那个次大值,然后在它所作用的区间内找异或最大 ...

  6. [HEOI2013]ALO(待更)

    题解: 可持久化trie 转载于:https://www.cnblogs.com/yinwuxiao/p/8856894.html

  7. P4098 [HEOI2013]ALO

    传送门 注意到关于次大值的要求,感觉直接搞不太行 考虑每个位置作为次大值时,可以包括的区间 设位置 $i$ 左边第一个大于它的数位置为 $l1$ ,第二个大于它的数位置为 $l2$ 设位置 $i$ 右 ...

  8. [HEOI2013]ALO

    题目描述: 现在你拥有 n 颗宝石,每颗宝石有一个能量密度,记为 ai,这些宝石的能量 密度两两不同.现在你可以选取连续的一些宝石(必须多于一个)进行融合,设 为 ai, ai+1, -, aj,则融 ...

  9. HEOI2013 ALO

    题目链接:戳我 我竟然还有脸发出这样一篇题解....... 其实我是暴力水过去的,,就从一个点开始,找它两边的数和它异或,不断更新答案.如果一侧找到第二个比它大的数,就break掉...... 正解是 ...

最新文章

  1. 什么是REST?以及RESTful
  2. 计算机网络基础 — 网络设备转发原理
  3. vbs获取cpu使用率
  4. UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
  5. 【javascript】数字相加
  6. linux启动keepalived服务,llinux企业常用服务---HA+keepalived双机热备
  7. 一个黑色全屏的计时器_我入手了一个1000多的智能手环,值吗?|Fitbit Charge 4测评...
  8. 如何在Hadoop中控制MapReduce任务的数量
  9. 微信自动抢红包软件被判赔475万
  10. lvds传输距离标准_如何正确看待POE交换机150米、长距离250米传输
  11. Intellij IDEA 添加jar包的三种方式
  12. C#之判断Mysql数据库表是否存在
  13. sql语句中【模糊查询like的使用】
  14. librdkafka交叉编译
  15. rs232接口_各类PLC都支持RS232和485通讯,原理和方法普及一下
  16. 编写一个计算图形面积和周长的程序
  17. Mysql(多级分销)无限极数据库表设计方法
  18. MATLAB 查找互素(质)对
  19. jbox2d android教程,Jbox2d实践应用
  20. 分数拆分(简单数学)

热门文章

  1. DXC Technology Company旗下公司Luxoft完成对CMORE Automotive的收购
  2. 杰奇reader.php源码,杰奇CMS reader.php开源代码
  3. 干涉仪测向原理matlab,干涉仪测向原理.pdf
  4. 西密歇根大学计算机科学专业排名,西密歇根大学计算机科学专业硕士申请条件及案例分享...
  5. 1366 mysql_Mysql错误1366 - Incorrect integer value解决方法
  6. Codeforces Round #428 (Div. 2):A. Arya and Bran
  7. 【全文翻译】ML-Leaks: Model and Data Independent Membership Inference Attacks and Defenses on Machine.....
  8. 浏览器无法保存密码,每次登录网页都要重新登录
  9. 利用大数据精准营销,给消费者一个选You的理由!
  10. .Net框架中的CLR,CTS,ClS的解释