正解:主席树

解题报告:

传送门$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. websocket实现数据库更新时前端页面实时刷新

    websocket实现数据库更新时前端页面实时刷新 javaweb 目录(?)[+] userjsp ManagerServletjava 如题,实现以上功能,我知道主要有两大种思路: 轮询:轮询的原 ...

  2. 04Top K算法问题

    本章阐述寻找最小的k个数的反面,即寻找最大的k个数,尽管寻找最大的k个树和寻找最小的k个数,本质上是一样的.但这个寻找最大的k个数的问题的实用范围更广,因为它牵扯到了一个Top K算法问题,以及有关搜 ...

  3. 实时计算轻松上手,阿里云DataWorks Stream Studio正式发布

    Stream Studio是DataWorks旗下重磅推出的全新子产品.已于2019年4月18日正式对外开放使用.Stream Studi是一站式流计算开发平台,基于阿里巴巴实时计算引擎Flink构建 ...

  4. @NOI模拟2017.07.02 - T1@ Attack

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 『新的风暴已经出现,怎么能够停滞不前』--你决定去攻击小怪兽的巢 ...

  5. springmvc 返回json数据给前台jsp页面展示

    spring mvc返回json字符串的方式 方案一:使用@ResponseBody 注解返回响应体 直接将返回值序列化json            优点:不需要自己再处理 步骤一:在spring- ...

  6. oracle不明确的索引等级

    当ORACLE无法判断索引的等级高低差别,优化器将只使用一个索引,它就是在WHERE子句中被列在最前面的. 举例: DEPTNO上有一个非唯一性索引,EMP_CAT也有一个非唯一性索引. SELECT ...

  7. [C#] WebClient性能优化

    WebClient缺省是为了安全和方便,不是为了性能.所以,当你打算做压力测试的时候,就会发现WebClient很慢. WebClient性能很差,主要原因有: 1.它缺省会使用IE的代理设置,而IE ...

  8. Python--day65--模板语言之tags

    Tags for循环 普通for循环 <ul> {% for user in user_list %} <li>{{ user.name }}</li> {% en ...

  9. Vue的事件修饰符

    转载于:https://www.cnblogs.com/xuqp/p/9406971.html 事件处理 如果需要在内联语句处理器中访问原生DOM事件.可以使用特殊变量$event,把它传入到meth ...

  10. SourceYard 制作源代码包

    本文带大家走进SourceYard开发之旅 在项目开发中,将一个大的项目拆为多个小项目解耦,减少模块之间的耦合.因为如果将代码放在一起,即使有团队的约束,但只要能写出的代码就会有小伙伴写出,很快就发现 ...