Zeratul的完美区间(线段树||RMQ模板题)
原题大意:原题链接
给定元素无重复数组,查询给定区间内元素是否连续
解体思路:由于无重复元素,所以如果区间内元素连续,则该区间内的最大值和最小值之差应该等于区间长度(r-l)
解法一:线段树(模板题)
#include<cstdio>
#include<algorithm>
#define inf 0x3f3f3f3f
using namespace std;
const int maxn=1e5+;
int va,curmi,curma;
int mi[*maxn],ma[*maxn];
void Build(int p,int l,int r)
{
if(l==r){
scanf("%d",&va);
mi[p]=ma[p]=va;
return;
}
int mid=(l+r)/;
Build(*p,l,mid);
Build(*p+,mid+,r);
mi[p]=min(mi[*p],mi[*p+]);
ma[p]=max(ma[*p],ma[*p+]);
}
void Query(int p,int l,int r,int ll,int rr)
{
if(ll<=l&&r<=rr){
curmi=min(curmi,mi[p]);
curma=max(curma,ma[p]);
return;
}
int mid=(l+r)/;
if(ll<=mid)
Query(*p,l,mid,ll,rr);
if(rr>mid)
Query(*p+,mid+,r,ll,rr);
}
int main()
{
int n,m,q,l,r;
scanf("%d",&n);
Build(,,n);
scanf("%d",&q);
while(q--){
scanf("%d%d",&l,&r);
curmi=inf,curma=-inf;
Query(,,n,l,r);
if(curma-curmi==r-l) puts("YES");
else puts("NO");
}
}
解法二:RMQ(模板题)
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=1e5+;
int n,q,l,r,va,curmi,curma;
int mi[maxn][],ma[maxn][]; void Rmq_Precede()
{
for(int j=;(<<j)<=n;j++){//长度最长为log2n
for(int i=;i+(<<j)-<=n;i++){//最后一个元素编号为i+(1<<j)-1
mi[i][j]=min(mi[i][j-],mi[i+(<<(j-))][j-]);
ma[i][j]=max(ma[i][j-],ma[i+(<<(j-))][j-]);
}
}
}
void Rmq_Query(int l,int r)
{
int k=log2(r-l+);
curmi=min(mi[l][k],mi[r-(<<k)+][k]);
curma=max(ma[l][k],ma[r-(<<k)+][k]);
} int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&va);
mi[i][]=ma[i][]=va;
}
Rmq_Precede();
scanf("%d",&q);
while(q--){
scanf("%d%d",&l,&r);
Rmq_Query(l,r);
if(curma-curmi==r-l) puts("YES");
else puts("NO");
}
}
Zeratul的完美区间(线段树||RMQ模板题)的更多相关文章
- hdu 1540 Tunnel Warfare (区间线段树(模板))
http://acm.hdu.edu.cn/showproblem.php?pid=1540 Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others) ...
- HDU1828 Picture 线段树+扫描线模板题
Picture Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- hdu 1754:I Hate It(线段树,入门题,RMQ问题)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- BZOJ 3110 ZJOI 2013 K大数查询 树套树(权值线段树套区间线段树)
题目大意:有一些位置.这些位置上能够放若干个数字. 如今有两种操作. 1.在区间l到r上加入一个数字x 2.求出l到r上的第k大的数字是什么 思路:这样的题一看就是树套树,关键是怎么套,怎么写.(话说 ...
- HDU 1754 I Hate It 线段树RMQ
I Hate It Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=175 ...
- 【bzoj3110】[Zjoi2013]K大数查询 权值线段树套区间线段树
题目描述 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c.如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数 ...
- 《白书》上线段树RMQ的实现
白书上的线段树RMQ实现,自己重写了一遍: #include <bits/stdc++.h> using namespace std; const int MAXN=1<<17 ...
- hdu1698 Just a Hook 【区间修改】(模板题)
题目链接:https://vjudge.net/contest/182746#problem/E 题目大意: 一段线段由n条小线段组成,每次操作把一个区间的小线段变成金银铜之一(金的价值为3,银为2, ...
- HDU 4578 Transformation --线段树,好题
题意: 给一个序列,初始全为0,然后有4种操作: 1. 给区间[L,R]所有值+c 2.给区间[L,R]所有值乘c 3.设置区间[L,R]所有值为c 4.查询[L,R]的p次方和(1<=p< ...
随机推荐
- 搭建virtualenv
一.前言 1.什么是virtualenv? 在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4.所有第三方的包都会被pip安装到Python3的site-packages目 ...
- YYModel源代码阅读--基础知识
这段时间因为工作需要,阅读了YYModel这个开源框架,至于它能做什么,最直白的讲述就是JSON与Model之间的相互转化. 源代码在Github,大家可以自行git clone或者download. ...
- 5.MySQL必知必会之过滤数据-WHERE
本章将讲授如何使用SELECT语句的WHERE子句指定搜索条件. 1.使用WHERE子句 数据库表一般包含大量的数据,很少需要检索表中所有行.通常只 会根据特定操作或报告的需要提取表数据的子集.只检索 ...
- Hive的metastore
hive --service metastore 默认端口是9083 <property> <name>hive.metastore.uris</name> < ...
- iOS 总结APP间跳转的常用以及非常用需求 APP跳转Safari APP跳转APP
需求驱动技术,有了新的需求,旧技术无法实现时,就会有新的技术出现. 一般的APP跳转需求有以下几种: 1. 从自己的APP跳转到别人的APP. 2. 从自己的APP跳转系统APP. 3. 让别人的A ...
- SSH整合不错的博客
https://blog.csdn.net/struggling_rong/article/details/63153833?locationNum=9&fps=1 好好看看看哦
- 【分库分表】sharding-jdbc—解决的问题
一.遇到的问题 随着互联网技术和业务规模的发展,单个db的表里数据越来越多,sql的优化已经作用不明显或解决不了问题了,这时系统的瓶颈就是单个db了(或单table数据太大).这时候就涉及到分库分表的 ...
- MVC 4中的前端渲染 @Helper指令
如果我们需要在一个页面或多个页面显示如人民币格式(后台传回来的无¥)¥的格式化.或是对后台数据作如保留小数个数等处理,这些东西经常要用到,特别是一些NULL值的处理,有可能会出错.这时我们可以通过创建 ...
- react-refetch的使用小例子
出处:<react设计模式和最佳实践> 作者:米凯莱·贝尔托利 出版时间:2018年8月第1版(还算新) 使用react-refetch来简化api获取数据的代码 const List = ...
- 5309 《Java程序设计》第6周学习总结
教材学习内容总结 输入与输出 InputStream与OutputStream 从应用程序角度来看,如果要将数据从来源取出,可以使用输入串流:如果要将数据写入目的地,可以使用输出串流.在Java中,输 ...