對於每個詢問,我們先考慮插入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的更多相关文章

随机推荐

  1. C语言字符串操作函数实现

    1.字符串反转 – strRev void strRev(char *str) { assert(NULL != str);   int length=strlen(str); ; while(end ...

  2. 20172325 2017-2018-2 《Java程序设计》第十周学习总结

    20172325 2017-2018-2 <Java程序设计>第十周学习总结 教材学习内容总结 1.集合与数据结构 集合是一种对象 集合按照保存类型来看可以分为两种: (1)同构集合:只能 ...

  3. laravel中if

    1.控制器 2.模板

  4. Java中通过SimpleDateFormat格式化当前时间:/** 输出格式:20060101010101001**/

    import java.util.*; import java.text.SimpleDateFormat; int y,m,d,h,mi,s,ms; String cur; Calendar cal ...

  5. 检查Makefile中的tab

    转:http://stackoverflow.com/questions/16931770/makefile4-missing-separator-stop makefile has a very s ...

  6. centos7 rabbitmq安装以及应用

    安装单机rabbitmq   1.安装erlang cd /usr.local yum install wget yum install net-tools wget http://erlang.or ...

  7. 2018.07.31 POJ1741Tree(点分治)

    传送门 只是来贴一个点分治的板子(年轻时候写的丑别介意). 代码: #include<cstdio> #include<cstring> #include<algorit ...

  8. k8s的port、targetport、nodeport之间的区别

    先看举例: k8s集群中跑着一个tomcat服务,tomcat容器expose的端口为8080 apiVersion: v1 kind: Service metadata: name: tomcat- ...

  9. 【转】MapReduce:详解Shuffle过程

    ——转自:{http://langyu.iteye.com/blog/992916} Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方.要想理解MapReduce, Shuffle ...

  10. js 验证input 输入框

    <h1>js验证输入框内容</h1><br /><br /> 只能输入英文<input type="text" onkeyup ...