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的更多相关文章
随机推荐
- tomcat内存溢出问题解决思路
.修改启动时内存参数.并指定JVM时区 (在windows server 下时间少了8个小时) 在Tomcat上运行j2ee项目代码时,经常会出现内存溢出的情况,解决办法是在系统参数中增加系统参数: ...
- 设计资源:三个精美APP原型例子下载
原型设计是整个产品生产过程中不可或缺的一环,无论你是移动端UI设计师或是网页设计师,原型设计都会让整个设计过程更加轻松.原型是产品概念的具象化,它让每个项目参与者都能查看并提出意见以便在产品发布前日臻 ...
- 优秀UX设计师的八条黄金法则
与用户保持亲密 成为成功的UX设计师最重要的先决条件之一就是与用户保持紧密的联系,以发现和了解他们的需求和爱好.理想情况下你应该让自己完全地成为产品用户,因为只有这样你才能理解背后的动机.“这样的 ...
- 设计模式-生成者模式之c#代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Java中的内存划分
Java程序在运行时,需要在内存中分配空间.为了提高运行效率,就对数据进行了不同的空间划分.因为每一片区域都有特定的数据处理方式和内存管理方式. 具体分为5种内存空间: 程序计数器:保证线程切换后能恢 ...
- IntelliJ IDEA 2017版 SpringBoot的关闭自动配置和自定义Banner
一.关闭自动配置 在jar包下找下边的名字 设置关闭自动配置jar 多个的时候配置 二.自定义Banner (1)网站搜索一个图案.网址:http://patorjk.co ...
- HDU 1718 Rank (排序)
题意:给你n个学号和成绩,并且给定一个学号,让找这个学号是多少名. 析:用个结构体,按成绩排序,然后找那个学号,这个题有一个小坑,那就是并列的情况, 可能并列多少名,这个要考虑一下,其他的easy! ...
- 机器学习 数据预处理之独热编码(One-Hot Encoding)
问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 例如,考虑一下的三个特征: ["male", "female"] ["from ...
- 零停重启程序工具Huptime研究
目录 目录 1 1. 官网 1 2. 功能 1 3. 环境要求 2 4. 实现原理 2 5. SIGHUP信号处理 3 6. 重启线程 4 7. 重启目标程序 5 8. 系统调用钩子辅助 6 9. 被 ...
- C语言中 指针的基础知识总结, 指针数组的理解
1: 指针变量所占的字节数与操作系统为位数有关,64位操作系统下,占8个字节,32位操作系统下,占4个字节 2: 指针变量的本质是用来放地址,而一般的变量是放数值的3: 脱衣服法则: a[2] 变成 ...