RMQ问题 [luogu 3865]
ST表模板题,尝试用单点修改线段树。
原本以为线段树会被卡掉,但是还是险过了。实践证明,快速读入很有用。
#include<bits/stdc++.h>
using namespace std;
inline void read(int &ans) {
int x=0,f=1; char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar()) if(ch=='-') f=-1;
for(;ch>='0'&&ch<='9';x=(x<<3)+(x<<1)+(ch^48),ch=getchar());
ans=x*f;
}
int n,m,maxv[400005];//线段树开4倍空间
int p1,p2;
int query(int o, int l, int r)
{
int m=(l+r)>>1, ans = 0;
if(p1 <= l && r <= p2) return maxv[o];
if(p1 <= m) ans = max(ans, query(o*2, l, m));
if(p2 > m) ans = max(ans, query(o*2+1, m+1, r));
return ans;
}
int p,v;//a[p]=v
void update(int o,int l,int r){
int m=(l+r)>>1;
if(l==r) maxv[o]=v;
else{
if(p<=m)update(o*2,l,m);
else update(o*2+1,m+1,r);
maxv[o]=max(maxv[o*2],maxv[o*2+1]);
}
}
int main(){
int k;
read(n),read(m);
for(int i=1;i<=n;i++)
{
read(k);
p=i, v=k;
update(1,1,n);
}
while(m--){
read(p1),read(p2);
printf("%d\n",query(1,1,n));
}
return 0;
}
RMQ问题 [luogu 3865]的更多相关文章
- luogu 3865 【模板】ST表
我太菜了 今天才学会现场脑补ST表静态RMQ #include<iostream> #include<cstdio> #include<algorithm> #in ...
- luogu 2048 超级钢琴 贪心+堆+RMQ
此题求长度在l,r,之间内的区间的前k大之和 1.静态区间第k大,不就是主席树么! 可是不会写啊,以后填坑吧 2.优先队列 固定左端点,选取以此为起点的长度l<=x<=r的区间,固定此范围 ...
- 主席树||可持久化线段树+离散化 || 莫队+分块 ||BZOJ 3585: mex || Luogu P4137 Rmq Problem / mex
题面:Rmq Problem / mex 题解: 先离散化,然后插一堆空白,大体就是如果(对于以a.data<b.data排序后的A)A[i-1].data+1!=A[i].data,则插一个空 ...
- 【luogu P4137 Rmq Problem / mex】 题解
题目链接:https://www.luogu.org/problemnew/show/P4137 求区间内最大没出现过的自然数 在add时要先判断会不会对当前答案产生影响,如果有就去找下一个答案. # ...
- luogu 5561 [Celeste-B]Mirror Magic 后缀数组+RMQ+multiset
思路肯定是没有问题,但是不知道为啥一直 TLE 两个点~ #include <bits/stdc++.h> #define N 2000006 #define setIO(s) freop ...
- ST表 || RMQ问题 || BZOJ 1699: [Usaco2007 Jan]Balanced Lineup排队 || Luogu P2880 [USACO07JAN]平衡的阵容Balanced Lineup
题面:P2880 [USACO07JAN]平衡的阵容Balanced Lineup 题解: ST表板子 代码: #include<cstdio> #include<cstring&g ...
- Luogu P4137 Rmq Problem / mex
区间mex问题,可以使用经典的记录上一次位置之后再上主席树解决. 不过主席树好像不是很好写哈,那我们写莫队吧 考虑每一次维护什么东西,首先记一个答案,同时开一个数组记录一下每一个数出现的次数. 然后些 ...
- Luogu 4137 Rmq Problem / mex
一个主席树题. 一开始想着直接动态开点硬搞就可以了,每次查询只要作一个类似于前缀和的东西看看区间有没有满,在主席树上二分就可以了. 但是这样是错的,因为一个权值会出现很多次……然后就错了. 所以我们考 ...
- luogu P4137 Rmq Problem / mex 主席树 + 思维
Code: #include<bits/stdc++.h> #define maxn 200001 using namespace std; void setIO(string s) { ...
随机推荐
- 【python】内存调试
全文拷贝自:http://blog.csdn.net/BaishanCloud/article/details/76422782 问题定位过程解读 gdb-python:搞清楚python程序在做什么 ...
- MongoDB----提升
文档之间的联系 一对一:通过文档内嵌的形式体现一对一的关系 db.user.insert({name:"xiaoming",frind:{name:"xiahua&quo ...
- jenkins 实现测试发布、预发布、真实发布、回滚发布
主要思路: 1.做三个文件夹,用于放置不可随意修改的配置文件(测试发布.预发布.真实发布) 2.每次都先修改配置文件再进行构建(构建时会先把配置文件复制到构建的目录,再同步到发布的目录) 3.发布完代 ...
- txt文档去重复内容
@echo off for /f "delims=" %%i in ('type "%1"') do (if not defined %%i set %%i=A ...
- spring中的xml配置出处
- 在Ubuntu内制作自己的VOC数据集
一.VOC数据集的简介 PASCAL VOC为图像的识别和分类提供了一整套标准化的优秀数据集,基本上就是目标检测数据集的模板.现在有VOC2007,VOC2012.主要有20个类.而现在主要的模型评估 ...
- SHELL打印两个日期之间的日期
SHELL打印两个日期之间的日期 [root@umout shell]# cat date_to_date.sh THIS_PATH=$(cd `dirname $0`;) cd $THIS_PATH ...
- TypeScipt学习
TypeScript具有类型系统,且是JavaScript的超集.它可以编译成普通的JavaScript代码. TypeScript支持任意浏览器,任意环境,任意系统并且是开源的.Ts主要用于解决那些 ...
- Idea的快捷键,瞎摸索,开心就好,哈哈哈
前言:如果你有强迫症,换了一个编辑器,最痛苦莫过于快捷键,不顺手了.这里自己瞎摸索的快捷键,贴一下,这里主要以实际应用为主,因为大量介绍的网上已经很多很多,So基本的不再叙述. 分享一下比较不错的Id ...
- lua生成UUID
百度云盘地址: https://pan.baidu.com/s/1zo__vSeDGaHOvCJLyzHwvA GitHub地址: https://github.com/bungle/lua-rest ...