原题大意:原题链接

给定元素无重复数组,查询给定区间内元素是否连续

解体思路:由于无重复元素,所以如果区间内元素连续,则该区间内的最大值和最小值之差应该等于区间长度(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模板题)的更多相关文章

  1. hdu 1540 Tunnel Warfare (区间线段树(模板))

    http://acm.hdu.edu.cn/showproblem.php?pid=1540 Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others) ...

  2. HDU1828 Picture 线段树+扫描线模板题

    Picture Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  3. 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 ...

  4. BZOJ 3110 ZJOI 2013 K大数查询 树套树(权值线段树套区间线段树)

    题目大意:有一些位置.这些位置上能够放若干个数字. 如今有两种操作. 1.在区间l到r上加入一个数字x 2.求出l到r上的第k大的数字是什么 思路:这样的题一看就是树套树,关键是怎么套,怎么写.(话说 ...

  5. 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 ...

  6. 【bzoj3110】[Zjoi2013]K大数查询 权值线段树套区间线段树

    题目描述 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c.如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数 ...

  7. 《白书》上线段树RMQ的实现

    白书上的线段树RMQ实现,自己重写了一遍: #include <bits/stdc++.h> using namespace std; const int MAXN=1<<17 ...

  8. hdu1698 Just a Hook 【区间修改】(模板题)

    题目链接:https://vjudge.net/contest/182746#problem/E 题目大意: 一段线段由n条小线段组成,每次操作把一个区间的小线段变成金银铜之一(金的价值为3,银为2, ...

  9. HDU 4578 Transformation --线段树,好题

    题意: 给一个序列,初始全为0,然后有4种操作: 1. 给区间[L,R]所有值+c 2.给区间[L,R]所有值乘c 3.设置区间[L,R]所有值为c 4.查询[L,R]的p次方和(1<=p< ...

随机推荐

  1. Mozilla Network Security Services拒绝服务漏洞

    解决办法: 运行 yum update nss yum update nss

  2. Mysql—(2)—

    数据库存储引擎 (更多详见) 一 什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件应该有不同的类型:比如存文本用txt类型,存 ...

  3. Android ExpandableListActivity

    ======MainActivity.java===================================== package com.zys.myexpandablelistactivit ...

  4. WKWebkit使用

    webkit使用WKWebView来代替IOS的UIWebView和OSX的WebView,并且使用Nitro JavaScript引擎,这意味着所有第三方浏览器运行JavaScript将会跟safa ...

  5. Linux系统——最小化安装

    一.虚拟机进行Linux minimal 安装 网络连接:选择“自定义”——>VMnet8(NAT模式) #PC与NAT网络的虚拟机在不同网段,此时虚拟网卡作为网关建立通信 NAT模式可直接上I ...

  6. 给idea配置默认的maven

    一.配置Maven环境 1.下载apache-maven文件,选择自己需要的版本,地址: http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.0/bin ...

  7. 003-spring boot项目的项目属性配置

    一.application.properties文件. 1.项目的配置文件内容.配置了端口,超时连接时间, 2.控制器. 3.访问. 二.application.yml文件 1.application ...

  8. (译)Windows Azure:移动后端开发的主要更新

    Windows Azure:移动后端开发的主要更新 这周我们给Windows Azure释出了一些很棒的更新,让云上的移动应用开发明显的简单了.这 些新功能包括: 移动服务:定制API支持移动服务:G ...

  9. tomcat源码调试

    三.tomcat目录结构 tomcat的下载安装有很多教程,不再赘述. 现在的tomcat已经到9了,当tomcat下载安装完成后,其目录大致如下:     除了上面的文件夹,还有四个文件:     ...

  10. java并发再次积累

    监视器与锁之间的关系: 1.object monitor 是任何一个对象都有的内置的数据结构,它是用来协调使用当前对象的多个线程之间的执行顺序的(wait/notify),线程会block或者wait ...