传送门

##解题思路
  首先直接莫队是能被卡的,时间复杂度不对。就考虑按照值域先进行分块再进行莫队,然后统计答案的时候就暴力扫所有的块,直到一个块内元素不满,再暴力扫这个块就行了,时间复杂度O(msqrt(n))

##代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm> using namespace std;
const int N=200005;
const int SIZ=600; inline int rd(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)) f=ch=='-'?0:1,ch=getchar();
while(isdigit(ch)) x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
return f?x:-x;
} int n,m,a[N],bl[N],siz,l[SIZ],r[SIZ],cnt[N],sum[SIZ],ans[N],num; struct Query{
int ql,qr,id;
friend bool operator<(const Query A,const Query B){
if(A.ql/siz!=B.ql/siz) return A.ql<B.ql;
if((A.ql/siz)&1) return A.qr>B.qr;
return A.qr<B.qr;
}
}q[N]; inline void del(int x){
if(a[x]>n) return;
cnt[a[x]]--;if(!cnt[a[x]]) sum[bl[a[x]]]--;
}
inline void add(int x){
if(a[x]>n) return ;
if(!cnt[a[x]]) sum[bl[a[x]]]++;cnt[a[x]]++;
}
inline int query(){
if(!cnt[0]) return 0;int pos=-1;
for(int i=1;i<=num;i++)
if(sum[i]!=r[i]-l[i]+1) {pos=i;break;}
if(pos==-1) return n+1;
for(int i=l[pos];i<=r[pos];i++)
if(!cnt[i]) return i;
} int main(){
n=rd(),m=rd();siz=sqrt(n)+1;num=n/siz+(n%siz!=0);
for(int i=1;i<=n;i++) a[i]=rd(),bl[i]=(i-1)/siz+1;
for(int i=1;i<=num;i++) l[i]=(i-1)*siz+1,r[i]=i*siz;r[num]=n;
for(int i=1;i<=m;i++) q[i].ql=rd(),q[i].qr=rd(),q[i].id=i;
sort(q+1,q+1+m);int L=1,R=0;
for(int i=1;i<=m;i++){
while(L<q[i].ql) {del(L);L++;}
while(L>q[i].ql) {L--;add(L);}
while(R<q[i].qr) {R++;add(R);}
while(R>q[i].qr) {del(R);R--;}
ans[q[i].id]=query();
}
for(int i=1;i<=m;i++) printf("%d\n",ans[i]);
return 0;
}

最新文章

  1. Spark笔记:复杂RDD的API的理解(下)
  2. Eclipse启动Tomcat时server.xml和content.xml自动还原问题
  3. MultiWiiWinGUI 汉化版
  4. Python 字符串分割的方法
  5. Linux_JDK安装
  6. Android RotateAnimation详解
  7. PHP isset()与empty()的区别
  8. MPlayer
  9. BZOJ2464: 中山市选[2009]小明的游戏
  10. 获取枚举Name,Value,Description两种方法
  11. Ubuntu 软件 安装 下载 及更新
  12. jquery 限制字数 显示输入字数 插件
  13. 配置Log4J(转载)
  14. Android TV 电视调试和遥控器事件监听
  15. 中兴F660光猫改桥接
  16. bootstrap的使用集锦
  17. PHP实现邮件的自动发送
  18. ByteBuffer详解
  19. PHD实时数据对象
  20. 4 kafka集群部署及kafka生产者java客户端编程 + kafka消费者java客户端编程

热门文章

  1. JPush极光推送Java服务器端实例
  2. TestComplete 14 百度网盘下载
  3. 2019 牛客暑期多校 第八场 A All-one Matrices (单调栈+前缀和)
  4. angularjs的select使用及默认选中
  5. php使用curl实现get和post请求的方法,数据传输urldecode和json
  6. Sublime Text 3 快捷键总结(Mac)
  7. Chrome-逆向分析JS-2获取发送请求位置(以datatables获取表格数据为例)
  8. 测开之路四十:jQuery基本用法
  9. Bellman-Ford&amp;&amp;SPFA算法详解
  10. 重写原生alert,弹出层过一会就消失