传送门

思路:

直接上主席树,对于每个询问\((l,r)\),我们在第\(r\)个版本的主席树中查询最晚出现的小于\(l\)最小的数就行了。

因为答案可能为\(a_i+1\),所以我们在离散化的时候考虑将\(a_i+1\)加进去。

一开始主席树部分没有思考清楚,还是对主席树的理解不够深入吧。。。其实就是一个维护前缀信息的数,后面的信息如果和前面有重复的,在这题中会直接将原来的覆盖掉。反正按照前缀树来思考就行啦~

#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int N = 200005;
int n, m;
int a[N], b[N << 1];
int D;
void Hash() {
sort(b + 1, b + D + 1);
D = unique(b + 1, b + D + 1) - b - 1;
for(int i = 1; i <= n; i++) a[i] = lower_bound(b + 1, b + D + 1, a[i]) - b;
}
int rt[N * 22], ls[N * 22], rs[N * 22], minv[N * 22], tot;
void build(int &o, int l, int r) {
o = ++tot; minv[o] = 0;
if(l == r) return;
int mid = (l + r) >> 1;
build(ls[o], l, mid); build(rs[o], mid + 1, r);
}
void insert(int &o, int last, int l, int r, int p, int v) {
o = ++tot;
ls[o] = ls[last]; rs[o] = rs[last];
if(l == r) {
minv[o] = v; return;
}
int mid = (l + r) >> 1;
if(p <= mid) insert(ls[o], ls[last], l, mid, p, v);
else insert(rs[o], rs[last], mid + 1, r, p, v);
minv[o] = min(minv[ls[o]], minv[rs[o]]);
}
int query(int o, int l, int r, int lim) {
if(l == r) return l;
int mid = (l + r) >> 1;
if(minv[ls[o]] <= lim) return query(ls[o], l, mid, lim);
return query(rs[o], mid + 1, r, lim);
}
int main() {
ios::sync_with_stdio(false); cin.tie(0);
cin >> n >> m;
for(int i = 1; i <= n; i++) cin >> a[i], b[++D] = a[i], b[++D] = a[i] + 1;
b[++D] = 0;
Hash();
build(rt[0], 1, D);
for(int i = 1; i <= n; i++) insert(rt[i], rt[i - 1], 1, D, a[i], i);
while(m--) {
int l, r; cin >> l >> r;
cout << b[query(rt[r], 1, D, l - 1)] << '\n';
}
return 0;
}

P4137 Rmq Problem / mex(主席树)的更多相关文章

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

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

  2. Luogu4137 Rmq problem/mex 主席树

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

  3. 洛谷$P$4137 $Rmq\ Problem / mex$ 主席树

    正解:主席树 解题报告: 传送门$QwQ$ 本来以为是道入门无脑板子题,,,然后康了眼数据范围发现并没有我想像的那么简单昂$kk$ 这时候看到$n$的范围不大,显然考虑离散化?但是又感觉似乎布星?因为 ...

  4. 洛谷 P4137 Rmq Problem /mex 解题报告

    P4137 Rmq Problem /mex 题意 给一个长为\(n(\le 10^5)\)的数列\(\{a\}\),有\(m(\le 10^5)\)个询问,每次询问区间的\(mex\) 可以莫队然后 ...

  5. P4137 Rmq Problem / mex (莫队)

    题目 P4137 Rmq Problem / mex 解析 莫队算法维护mex, 往里添加数的时候,若添加的数等于\(mex\),\(mex\)就不能等于这个值了,就从这个数开始枚举找\(mex\): ...

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

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

  7. luogu P4137 Rmq Problem / mex(可持久化线段树)

    一开始想的是莫队,然后维护几个bitset,然后瞎搞.脑子里想了想实现,发现并不好写. 还是主席树好写.我们维护一个权值的线段树,记录每一个权值的最后一次出现的位置下标.我们查询的时候要在前\(r\) ...

  8. 洛谷 P4137 Rmq Problem / mex

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

  9. Luogu P4137 Rmq Problem / mex

    区间mex问题,可以使用经典的记录上一次位置之后再上主席树解决. 不过主席树好像不是很好写哈,那我们写莫队吧 考虑每一次维护什么东西,首先记一个答案,同时开一个数组记录一下每一个数出现的次数. 然后些 ...

随机推荐

  1. 【可视化】Vue基础

    作者 | Jeskson 来源 | 达达前端小酒馆 Vue简介 Vue框架,框架的作者,尤雨溪,组件化,快速开发的特点. 生命周期 beforeCreate:组件刚刚被创建 created:组件创建完 ...

  2. [LeetCode] 189. Rotate Array 旋转数组

    Given an array, rotate the array to the right by k steps, where k is non-negative. Example 1: Input: ...

  3. Spring Cloud Zuul记录接口响应数据

    系统在生产环境出现问题时,排查问题最好的方式就是查看日志了,日志的记录尽量详细,这样你才能快速定位问题. 如果需要在Zuul中进行详细的日志记录,这两种日志必不可少. API请求信息 API响应信息 ...

  4. WC 2008 观光计划(斯坦纳树)

    题意 https://www.lydsy.com/JudgeOnline/problem.php?id=2595 思路 是一道比较裸的斯坦纳树呢- 题意等价于选出包含一些点的最小生成树,这就是斯坦纳树 ...

  5. axios详解

    一.说明 Axios是一个基于Promise(ES6中用于处理异步的)的HTTP库(HTTP客户端),用于浏览器和node.js中,API. 浏览器中创建XMLHttpRequests 从node.j ...

  6. 'try(A a = new A())' VS 'try finally'

    实现了AutoCloseable接口的类,可以在try的时候直接实例化对象.try代码块完成之后,自动调用close方法,相当于在finally里主动调用.但是出现异常后的流程和try finally ...

  7. hyper-v安装centos后配置网络

    YPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="n ...

  8. 常用mysql系统表及命令

    常用系统表查看当前数据库连接ip信息– select * from information_schema.PROCESSLIST 当前mysql实例中所有数据库的信息– select * from i ...

  9. 基于FlexBox的无约束自适应

    全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/11972664.html,多谢,=.=~ 一.背景描述   对于通用型带过滤条件的列表查询项目中, ...

  10. 《 .NET并发编程实战》阅读指南 - 第5章

    先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.