原题大意:原题链接

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

解体思路:由于无重复元素,所以如果区间内元素连续,则该区间内的最大值和最小值之差应该等于区间长度(r-l)

解法一:线段树(模板题)

  1. #include<cstdio>
  2. #include<algorithm>
  3. #define inf 0x3f3f3f3f
  4. using namespace std;
  5. const int maxn=1e5+;
  6. int va,curmi,curma;
  7. int mi[*maxn],ma[*maxn];
  8. void Build(int p,int l,int r)
  9. {
  10. if(l==r){
  11. scanf("%d",&va);
  12. mi[p]=ma[p]=va;
  13. return;
  14. }
  15. int mid=(l+r)/;
  16. Build(*p,l,mid);
  17. Build(*p+,mid+,r);
  18. mi[p]=min(mi[*p],mi[*p+]);
  19. ma[p]=max(ma[*p],ma[*p+]);
  20. }
  21. void Query(int p,int l,int r,int ll,int rr)
  22. {
  23. if(ll<=l&&r<=rr){
  24. curmi=min(curmi,mi[p]);
  25. curma=max(curma,ma[p]);
  26. return;
  27. }
  28. int mid=(l+r)/;
  29. if(ll<=mid)
  30. Query(*p,l,mid,ll,rr);
  31. if(rr>mid)
  32. Query(*p+,mid+,r,ll,rr);
  33. }
  34. int main()
  35. {
  36. int n,m,q,l,r;
  37. scanf("%d",&n);
  38. Build(,,n);
  39. scanf("%d",&q);
  40. while(q--){
  41. scanf("%d%d",&l,&r);
  42. curmi=inf,curma=-inf;
  43. Query(,,n,l,r);
  44. if(curma-curmi==r-l) puts("YES");
  45. else puts("NO");
  46. }
  47. }

解法二:RMQ(模板题)

  1. #include<cmath>
  2. #include<cstdio>
  3. #include<algorithm>
  4. using namespace std;
  5. const int maxn=1e5+;
  6. int n,q,l,r,va,curmi,curma;
  7. int mi[maxn][],ma[maxn][];
  8.  
  9. void Rmq_Precede()
  10. {
  11. for(int j=;(<<j)<=n;j++){//长度最长为log2n
  12. for(int i=;i+(<<j)-<=n;i++){//最后一个元素编号为i+(1<<j)-1
  13. mi[i][j]=min(mi[i][j-],mi[i+(<<(j-))][j-]);
  14. ma[i][j]=max(ma[i][j-],ma[i+(<<(j-))][j-]);
  15. }
  16. }
  17. }
  18. void Rmq_Query(int l,int r)
  19. {
  20. int k=log2(r-l+);
  21. curmi=min(mi[l][k],mi[r-(<<k)+][k]);
  22. curma=max(ma[l][k],ma[r-(<<k)+][k]);
  23. }
  24.  
  25. int main()
  26. {
  27. scanf("%d",&n);
  28. for(int i=;i<=n;i++){
  29. scanf("%d",&va);
  30. mi[i][]=ma[i][]=va;
  31. }
  32. Rmq_Precede();
  33. scanf("%d",&q);
  34. while(q--){
  35. scanf("%d%d",&l,&r);
  36. Rmq_Query(l,r);
  37. if(curma-curmi==r-l) puts("YES");
  38. else puts("NO");
  39. }
  40. }

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. 如何设计Spring读取某种文件的逻辑顺序

    1. 判断系统属性System.getProperty("apdb.config.path", "");,有的话,优先使用.(系统属性可以在命令行中以 -D&l ...

  2. pandas--对axis=0,axis=1的理解

    Stackoverflow.com是程序员的好去处,本公众号将以pandas为主题,开始一个系列,争取做到每周一篇,翻译并帮助pandas学习者一起理解一些有代表性的案例.今天的主题就是Pandas与 ...

  3. Optimal Marks SPOJ - OPTM (按位枚举-最小割)

    题意:给一张无向图,每个点有其点权,边(i,j)的cost是\(val_i\ XOR \ val_j\).现在只给出K个点的权值,求如何安排其余的点,使总花费最小. 分析:题目保证权值不超过32位整型 ...

  4. ElasticSearch的x-pack配置查询

    ElasticSearch在安装完x-pack后, 存在客户端通过Transport访问ES出现异常:java.lang.IllegalArgumentException: Unknown Named ...

  5. deeplenrnig学习笔记——什么是特征

     特征是机器学习系统的原材料,对最终模型的影响是毋庸置疑的.如果数据被很好的表达成了特征,通常线性模型就能达到满意的精度. 一.特征的表示粒度:   学习算法在一个什么粒度上的特征表示,才有能发挥作用 ...

  6. zookeeper 监听事件 CuratorWatcher

    zookeeper 监听事件 CuratorWatcher CuratorWatcher一次注册只监听一次,不监听查询. 1.监听测试类 package com.qy.learn.zk.curator ...

  7. Linux 系统日志管理 rsyslogd配置文件

    rsyslogd配置文件  rsyslogd 服务是依赖其配置文件 /etc/rsyslog.conf 来确定哪个服务的什么等级的日志信息会被记录在哪个位置的.也就是说,日志服务的配置文件中主要定义了 ...

  8. 高通camera结构【转】

    本文转载自:http://www.cnblogs.com/whw19818/p/5853407.html 摄像头基础介绍 一.摄像头结构和工作原理. 拍摄景物通过镜头,将生成的光学图像投射到传感器上, ...

  9. Swoole学习(三)Swoole之UDP服务器的创建

    环境:Centos6.4,PHP环境:PHP7 <?php //创建UCP服务器(UDP服务器相对于TCP服务器通信更可靠些) /** * $host 是swoole需要监听的ip,如果要监听本 ...

  10. 20145303刘俊谦 《Java程序设计》第2周学习总结

    20145303刘俊谦 <Java程序设计>第2周学习总结 教材学习内容总结 1.对于标识符的一些名称规范(觉得挺重要而且容易混淆!定义就不写了,列一些例子): 包名: xxxyyyzzz ...