gta5线下买房网站建设,网站顾客评价,电子商务网站建设课程总结,教做奥数的网站正题
评测记录:https://www.luogu.org/recordnew/lists?uid52918pidP4137 题目大意
求区间mex。 解题思路
开始发现aia_iai很大#xff0c;开不了桶。但是转念一想#xff0c;如果ansn1ansn1ansn1仅当前n1个都有#xff0c;可是最多只有n个#xff…正题
评测记录:https://www.luogu.org/recordnew/lists?uid52918pidP4137 题目大意
求区间mex。 解题思路
开始发现aia_iai很大开不了桶。但是转念一想如果ansgt;n1ansgt;n1ansn1仅当前n1个都有可是最多只有n个所以gt;ngt;nn的都没用。 之后开个桶莫队分块优化就行了。 code
#includecstdio
#includecmath
#includealgorithm
#define N 200010
using namespace std;
struct node{int l,r,id,pos;
}a[N];
int n,m,w[N],l,r,now,id[N],t;
int cnt[N],ans[N];
bool cmp(node x,node y){return x.posy.pos||(x.posy.posx.ry.r);
}
void add(int x)
{if(w[x]n) return;cnt[w[x]];while(cnt[now]) now;
}
void del(int x)
{if(w[x]n) return;cnt[w[x]]--;if(!cnt[w[x]]) nowmin(now,w[x]);
}
int main()
{scanf(%d%d,n,m);tsqrt(n);for(int i1;in;i)scanf(%d,w[i]);for(int i1;im;i)scanf(%d%d,a[i].l,a[i].r),a[i].idi,a[i].pos(a[i].l-1)/t1;sort(a1,a1m,cmp);l1,r0;for(int i1;im;i){while(la[i].l) add(--l);while(ra[i].r) add(r);while(la[i].l) del(l);while(ra[i].r) del(r--);ans[a[i].id]now;//for(int j0;j5;j)// printf(%d ,cnt[j]);//printf(:%d-%d\n,a[i].l,a[i].r);}for(int i1;im;i)printf(%d\n,ans[i]);
}