原题大意:原题链接

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

解体思路:由于无重复元素,所以如果区间内元素连续,则该区间内的最大值和最小值之差应该等于区间长度(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. php等守护进程监控脚本(转载 http://www.9958.pw/post/php_script_scan)

    此脚本用户守护监控进程的执行情况,因为有的时候,我们用各类开发语言做的守护进程可能会因为一些特殊情况被退出,所以此脚本就是为了重启这些进程 代码: #!/bin/bash EMAIL='9958_pw ...

  2. windows计划任务定时运行synctoy的坑

    每次设置好synctoy之后,需要让synctoy运行一次,windows的计划任务才能成功执行,如果变更了synctoy的设置,而没有让synctoy成功执行过,windows计划任务将执行失败,坑 ...

  3. 62. Unique Paths (走棋盘多少种不同的走法 动态规划)

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  4. 2017 Multi-University Training Contest - Team 4 hdu6071 Lazy Running

    地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6071 题目: Lazy Running Time Limit: 2000/1000 MS (J ...

  5. 进度条Demo

    package threadAndRunnable; import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swi ...

  6. php与js 编码解码交互

    javascript: var  fontcolorEncode=encodeURIComponent(fontcolor.value);  //编码 php: $fontcolordecode= u ...

  7. STM32 HAL库详解 及 手动移植

    源: STM32 HAL库详解 及 手动移植

  8. vsftpd基于mysql的认证方式

    安装epel源: cd /etc/yum.repos.d wget http://mirrors.neusoft.edu.cn/epel/epel-release-latest-6.noarch.rp ...

  9. 20145216史婧瑶《Java程序设计》第一次实验报告

    实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 1.没 ...

  10. 20145301 《Java程序设计》第八周学习总结

    20145301 <Java程序设计>第八周学习总结 教材学习内容总结 第十五章部分 - 通用API 日志API 日志: 日志对信息安全意义重大,审计.取证.入侵检测等都会用到日志信息 L ...