對於每個詢問,我們先考慮插入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. Electronic Trading[z]

    This article is to discuss the operation model between Fund Managers(Client) and Broker Firms. They ...

  2. mvc下ajax请求遇到session超时简单处理方式

    转自:http://blog.csdn.net/yeyicsdn/article/details/50032787 参考网址:http://www.cnblogs.com/RachelChen/p/5 ...

  3. idea 注释文件和方法注释

    类注释: 如下图所示

  4. maven 打包 OutOfMemoryError

    maven 打包 OutOfMemoryError [ERROR] Java heap space -> [Help 1] [ERROR] [ERROR] To see the full sta ...

  5. MongoDB复制集搭建(3.4.17版)

    ==版本== mongodb-linux-x86_64-rhel70-3.4.17.tgz ==准备== 3个节点,我这里的IP及hostname分别是: 10.11.2.52 dscn49 10.1 ...

  6. 2018.09.10 bzoj1597: [Usaco2008 Mar]土地购买(斜率优化dp)

    传送门 终究还是通宵了啊... 这是一道简单的斜率优化dp. 先对所有土地排序,显然如果有严格小于的两块土地不用考虑小的一块. 于是剩下的土地有一条边单增,另外一条单减. 我们假设a[i]是单减的,b ...

  7. hdu-1067(最大独立集)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1068 题意:一个男生集合和一个女生集合,给出两个集合之间一一对应的关系,求出两个集合中最大独立集的点数 ...

  8. The class cn.itcast.web.common.util.UtilFuns specified in TLD for the function selffn:htmlNewline cannot be found: cn.itcast.web.common.util.UtilFuns

    我的一个Util方法的包名更改了,运行时候报这个错误.找到tld文件,把包名重新改为我改的名字就好使了.

  9. AE(ArcEngine)定制工具Tool工具箱

    using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServi ...

  10. Android+PHP开发最佳实践

    本书以一个完整的微博应用项目实例为主线,由浅入深地讲解了Android客户端开发和PHP服务端开发的思路和技巧.从前期的产品设计.架构设计,到客户端和服务器的编码实现,再到性能测试和系统优化,以及最后 ...