正解:主席树

解题报告:

传送门$QwQ$

本来以为是道入门无脑板子题,,,然后康了眼数据范围发现并没有我想像的那么简单昂$kk$

这时候看到$n$的范围不大,显然考虑离散化?但是又感觉似乎布星?因为询问的是最小没有出现昂$kk$

这时候考虑到答案显然要么是0要么是$a_{i}+1$?所以只用把$0,a_{i},a_{i}+1$离散化掉就成$QwQ$

然后就主席树板子了$QwQ$?开权值线段树存这个位置当前最后一次出现的位置,然后每次就是找最小的最后一次出现位置<l的数就成$QwQ$

$overrrrr$

对了,说一句,就记得数组要开大点儿,,,我数组开小了它也没有提醒我$RE$了而是跟我港$WA$了$QAQQQQQ$

#include<bits/stdc++.h>
using namespace std;
#define il inline
#define int long long
#define gc getchar()
#define ri register int
#define rc register char
#define rb register bool
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i)
#define lb(x) lower_bound(st+1,st+1+sum,x)-st const int N=+;
int n,m,a[N],st[N],sum,rt[N],tr_cnt;
struct node{int mn,ls,rs;}tr[N<<]; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
int insert(ri d,ri l,ri r,ri dat,ri pos)
{
ri nw=++tr_cnt;tr[nw]=tr[d];if(l==r)return tr[tr_cnt].mn=pos,tr_cnt;
ri mid=(l+r)>>;mid>=dat?tr[nw].ls=insert(tr[d].ls,l,mid,dat,pos):tr[nw].rs=insert(tr[d].rs,mid+,r,dat,pos);
tr[nw].mn=min(tr[tr[nw].ls].mn,tr[tr[nw].rs].mn);return nw;
}
int query(ri nw,ri l,ri r,ri to)
{
if(l==r)return l;
//printf("nw=%d l=%d r=%d to=%d ls.mn=%d\n",nw,l,r,to,tr[tr[nw].ls].mn);
if(tr[tr[nw].ls].mn<to)return query(tr[nw].ls,l,(l+r)>>,to);
return query(tr[nw].rs,((l+r)>>)+,r,to); } signed main()
{
freopen("4137.in","r",stdin);freopen("4137.out","w",stdout);
n=read();m=read();rp(i,,n)a[i]=st[++sum]=read(),st[++sum]=a[i]+;st[++sum]=;
sort(st+,st++sum);sum=unique(st+,st++sum)-st-;rp(i,,n)rt[i]=insert(rt[i-],,sum,lb(a[i]),i);
while(m--){ri l=read(),r=read();printf("%lld\n",st[query(rt[r],,sum,l)]);}
return ;
}

洛谷$P$4137 $Rmq\ Problem / mex$ 主席树的更多相关文章

  1. Luogu4137 Rmq problem/mex 主席树

    传送门 用主席树水莫队题…… 我们对于前缀和建立主席树,对于主席树中的每一个叶子节点表示它对应的数字最后出现的位置的编号,非叶子节点求左右节点的最小值,那么对于每一次询问$l,r$就是在第$r$棵主席 ...

  2. bzoj3489: A simple rmq problem (主席树)

    //========================== 蒟蒻Macaulish:http://www.cnblogs.com/Macaulish/  转载要声明! //=============== ...

  3. luogu P4137 Rmq Problem / mex 主席树 + 思维

    Code: #include<bits/stdc++.h> #define maxn 200001 using namespace std; void setIO(string s) { ...

  4. 主席树||可持久化线段树+离散化 || 莫队+分块 ||BZOJ 3585: mex || Luogu P4137 Rmq Problem / mex

    题面:Rmq Problem / mex 题解: 先离散化,然后插一堆空白,大体就是如果(对于以a.data<b.data排序后的A)A[i-1].data+1!=A[i].data,则插一个空 ...

  5. 洛谷 P4137 Rmq Problem / mex

    https://www.luogu.org/problemnew/show/P4137 只会log^2的带修主席树.. 看了题解,发现有高妙的一个log做法:权值线段树上,设数i对应的值ma[i]为数 ...

  6. 分块+莫队||BZOJ3339||BZOJ3585||Luogu4137||Rmq Problem / mex

    题面:P4137 Rmq Problem / mex 题解:先莫队排序一波,然后对权值进行分块,找出第一个没有填满的块,直接for一遍找答案. 除了bzoj3339以外,另外两道题Ai范围都是1e9. ...

  7. BZOJ3339&&3585 Rmq Problem&&mex

    BZOJ3339&&3585:Rmq Problem&&mex Description 有一个长度为n的数组{a1,a2,...,an}.m次询问,每次询问一个区间内最 ...

  8. [bzoj3585] Rmq Problem / mex

    [bzoj3585] Rmq Problem / mex bzoj luogu 看上一篇博客吧,看完了这个也顺理成章会了( (没错这篇博客就是这么水) #include<cstdio> # ...

  9. [BZOJ3339]Rmq Problem / mex

    Description: 有一个长度为n的数组{a1,a2,-,an}.m次询问,每次询问一个区间内最小没有出现过的自然数. Hint: \(n \le 2*10^5\) Solution: 主席树好 ...

随机推荐

  1. jQuery 滑动

    jQuery 滑动方法 通过 jQuery,您可以在元素上创建滑动效果. jQuery 拥有以下滑动方法: slideDown() slideUp() slideToggle() jQuery sli ...

  2. CNN滤波器

    CNN 的第一步是把图片分成小块.我们通过选取一个给定宽度和高度的滤波器来实现这一步. 滤波器会照在图片的小块 patch (图像区块)上.这些 patch 的大小与滤波器一样大.   如之前视频所示 ...

  3. 洛谷 1372 又是毕业季I

    题目背景 “叮铃铃铃”,随着高考最后一科结考铃声的敲响,三年青春时光顿时凝固于此刻.毕业的欣喜怎敌那离别的不舍,憧憬着未来仍毋忘逝去的歌.1000多个日夜的欢笑和泪水,全凝聚在毕业晚会上,相信,这一定 ...

  4. 禁用gpu首选

    import osos.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"os.environ["CUDA_VIS ...

  5. jq实现简单手风琴效果

    文章地址:https://www.cnblogs.com/sandraryan/ 利用slideUp slideDown动画 <!DOCTYPE html> <html lang=& ...

  6. HDU 2066最短路径Dijkstra、

    思路:枚举所有起点城市然后比较每个起点所去喜欢城市的最小距离 #include<cstdio> #include<cmath> #include<cstring> ...

  7. H3C PPP MP配置示例二

  8. java什么是跨平台性?原理是什么?

    所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行. 实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行 ...

  9. tp5 字段验证表中是否唯一

    namespace app\ps\validate; /** * 客户分类验证器 */ class CustomerCategory extends PsBase { // 验证规则 protecte ...

  10. vs code 如何修改默认主题的注释颜色

    平时喜欢将注释的颜色调成绿色,既不刺眼,也比较醒目,在大型项目中,能很容易的根据注释找道想要的部分:但是,每次修改完使用一段时间后,当vs code 自动更新了,又变成默认的颜色了,为了方便每次快速修 ...