jzoj5710
對於每個詢問,我們先考慮插入1~r中每個數的答案,這樣子就不用考慮後面數對現在的影響
那麼我們可以在權值線段樹的每一個位置存儲每一個值最後一次結束的位置
問題變成了,如何判斷區間連續?
我們可以對線段樹對應區間所有節點權值取最小值,我們發現如果有一個值<l,那麼有一個數不在區間內出現,區間就不連續,否則區間就連續
#include<bits/stdc++.h>
using namespace std;
#define N 200010
int n,m,a[N],lc[N<<5],rc[N<<5],rt[N],sz[N<<5],ct,la,t;
void ins(int &o,int p,int l,int r,int x,int y){
if(!o)o=++ct;
if(l==r){
sz[o]=y;
return;
}
int mid=(l+r)/2;
if(x<=mid){
rc[o]=rc[p];
ins(lc[o],lc[p],l,mid,x,y);
}
else{
lc[o]=lc[p];
ins(rc[o],rc[p],mid+1,r,x,y);
}
sz[o]=min(sz[lc[o]],sz[rc[o]]);
}
int q(int o,int p,int l,int r,int x){
if(l==r)return l;
int mid=(l+r)/2;
if(sz[lc[o]]>=x)return q(rc[o],rc[p],mid+1,r,x);
return q(lc[o],lc[p],l,mid,x);
}
int main(){
freopen("mex.in","r",stdin);
freopen("mex.out","w",stdout);
scanf("%d%d%d",&n,&m,&t);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
ins(rt[i],rt[i-1],0,1e9+5,a[i],i);
}
while(m--){
int l,r;
scanf("%d%d",&l,&r);
if(t)l^=la,r^=la;
la=q(rt[r],rt[l-1],0,1e9+5,l);
printf("%d\n",la);
}
}
jzoj5710的更多相关文章
随机推荐
- 基于udp的套接字
1 ss = socket() #创建一个服务器的套接字 2 ss.bind() #绑定服务器套接字 3 inf_loop: #服务器无限循环 4 cs = ss.recvfrom()/ss.send ...
- 纯净版Windows7系统迅雷下载路径
windows 7 旗舰版64位------------------- Windows 7 Ultimate (x64) - DVD (Chinese-Simplified) 详细信息 文件名 ...
- Oracle增加一列、修改一列数据类型
Oracle增加一列.修改一列数据类型: 添加一列: alter table A add( CFYJSNR varchar2(20)); 修改列: alter table A ren ...
- 七大排序的个人总结(二) 归并排序(Merge
七大排序的个人总结(二) 归并排序(Merge 归并排序(Merge Sort): 归并排序是一个相当“稳定”的算法对于其它排序算法,比如希尔排序,快速排序和堆排序而言,这些算法有所谓的最好与最 ...
- php调用window系统自带的命令,比如计算器
1.在cmd命令行输入calc.exe 2.
- VMware + LInux + Xshell 连接环境设置(心得体会)
准备好VMware软件,和Linux 和xshell三款软件,下载和安装好,这里VMware是十二,Linux是CentOs 6 ,xshell是5 其实没有什么区别只要版本兼容就行,我们就可以实现远 ...
- UVa 11346 Probability (转化+积分+概率)
题意:给定a,b,s,在[-a, a]*[-b, b]区域内任取一点p,求以原点(0,0)和p为对角线的长方形面积大于s的概率. 析:应该明白,这个和高中数学的东西差不多,基本就是一个求概率的题,只不 ...
- java中的类、对象、方法
类=一个种类(class)东西 对象=属于该种类的一个对象/物件(object,台湾翻译为‘物件’)方法=对这个种类的东西都可以进行的操作 比如我有一辆汽车-类 public class car {. ...
- QGIS Server Quickstart
http://live.osgeo.org/en/quickstart/qgis_mapserver_quickstart.html
- 20145209 2016-2017-2 《Java程序设计》第6周学习总结
20145209 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 4.1 Y86指令集体系结构 •有8个程序寄存器:%eax.%ecx.%edx.%ebx.% ...