很基础啊~

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long LL;
  4. const int INF=-0x3f3f3f3f;
  5. const int N=1e4+10;
  6. struct asd{
  7. int left;
  8. int right;
  9. int w;
  10. };
  11. asd q[N*4];
  12. void Build(int num,int L,int R)
  13. {
  14. q[num].left=L;
  15. q[num].right=R;
  16. if(L==R)
  17. {
  18. scanf("%d",&q[num].w);
  19. return;
  20. }
  21. Build(2*num,L,(L+R)/2);
  22. Build(2*num+1,(L+R)/2+1,R);
  23. q[num].w=max(q[2*num].w,q[2*num+1].w);
  24. }
  25. int query(int num,int s,int t)
  26. {
  27. if(s<=q[num].left&&t>=q[num].right)
  28. return q[num].w;
  29. if(q[num].right==q[num].left)
  30. return q[num].w;
  31. int mid=(s+t)/2;
  32. if(mid>=t)
  33. return query(2*num,s,t);
  34. else if(mid<s)
  35. return query(2*num+1,s,t);
  36. else
  37. return max(query(2*num,s,mid),query(2*num+1,mid+1,t));
  38. }
  39. int get_maxa(int num,int s,int t)
  40. {
  41. if(s<=q[num].left&&t>=q[num].right)
  42. return q[num].w;
  43. int mid=(q[num].left+q[num].right)/2;
  44. if(mid>=t)
  45. return get_maxa(2*num,s,t);
  46. else if(mid<s)
  47. return get_maxa(2*num+1,s,t);
  48. else
  49. return max(get_maxa(2*num,s,mid),get_maxa(2*num+1,mid+1,t));
  50. }
  51. int main()
  52. {
  53. int x,y,n,q;
  54. scanf("%d",&n);
  55. Build(1,1,n);
  56. scanf("%d",&q);
  57. while(q--)
  58. {
  59. scanf("%d%d",&x,&y);
  60. printf("%d\n",get_maxa(1,x+1,y+1));
  61. }
  62. return 0;
  63. }

51nod1174【基于线段树的RMQ】的更多相关文章

  1. 基于线段树的RMQ

    RMQ(Range Minimum/Maximum Query)区间最值查询,即给出长度为n的数组A,以及m组询问s.t(s<=t<=n),返回区间[s,t]中的最值. 基于线段树的方法实 ...

  2. 线段树+RMQ问题第二弹

    线段树+RMQ问题第二弹 上篇文章讲到了基于Sparse Table 解决 RMQ 问题,不知道大家还有没有印象,今天我们会从线段树的方法对 RMQ 问题再一次讨论. 正式介绍今天解决 RMQ 问题的 ...

  3. POJ 3368 Frequent values 线段树与RMQ解法

    题意:给出n个数的非递减序列,进行q次查询.每次查询给出两个数a,b,求出第a个数到第b个数之间数字的最大频数. 如序列:-1 -1 1 1 1 1 2 2 3 第2个数到第5个数之间出现次数最多的是 ...

  4. POJ-3264 Balanced Lineup(区间最值,线段树,RMQ)

    http://poj.org/problem?id=3264 Time Limit: 5000MS     Memory Limit: 65536K Description For the daily ...

  5. poj 3264 Balanced Lineup(线段树、RMQ)

    题目链接: http://poj.org/problem?id=3264 思路分析: 典型的区间统计问题,要求求出某段区间中的极值,可以使用线段树求解. 在线段树结点中存储区间中的最小值与最大值:查询 ...

  6. tyvj 1038 忠诚 区间最小值 线段树或者rmq

    P1038 忠诚 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天 ...

  7. Codeforces Round #278 (Div. 1) Strip (线段树 二分 RMQ DP)

    Strip time limit per test 1 second memory limit per test 256 megabytes input standard input output s ...

  8. V-Parenthesis 前缀+ZKW线段树或RMQ

    Bobo has a balanced parenthesis sequence P=p 1 p 2…p n of length n and q questions. The i-th questio ...

  9. POJ - 3264 Balanced Lineup(线段树或RMQ)

    题意:求区间最大值-最小值. 分析: 1.线段树 #include<cstdio> #include<cstring> #include<cstdlib> #inc ...

随机推荐

  1. innodb 修改表共享空间为独立空间

    最近在优化mysql innodb存储引擎,准备把共享表空间转换成独立表空间.刚开始的没考虑这么多,过段时间又要推广,所以优化一下,看看效果如何.说一个转换过程. 1,查看一下是共享表空间,还是独立表 ...

  2. POJ3420 Quad Tiling DP + 矩阵高速幂

    题目大意是用1*2的骨牌堆积成4*N的矩形.一共同拥有多少种方法,N不超过10^9. 这题和以前在庞果网上做过的一道木块砌墙差点儿一样. 由于骨牌我们能够横着放.竖着放.我们如果以4为列,N为行这样去 ...

  3. 【第四篇章-android平台MediaCodec】解决Observer died. Quickly, do something, ... anything...

    当出现!!!Observer died. Quickly, do something, ... anything...说明你的程序已经出现严重异常了,那会是什么情况呢?这个问题困扰了我许久,后来原来是 ...

  4. android-auto-scroll-view-pager

    https://github.com/eltld/android-auto-scroll-view-pager

  5. JfreeChart折线图 CSDN-李鹏飞

    今天公司里分配给我的工作是JfreeChart折线图本人之前也没接触过如今让我们大家一起完毕! 在这个公司,用到了太多的JfreeChart,今天就对折线图作一个总结,希望对大家有点帮助,我这里直接是 ...

  6. WM_GETMINMAXINFO的作用 .

    如果想要实现窗口全屏,并且还有状态栏,会出现问题,那就是OnGetMinMaxInfo函数的作用.你可以试一下,如果把这个函数去掉,则当你按下工具栏中的全屏显示按钮时,框架视图确实变大了,但没有想象的 ...

  7. 线程安全 对StringBuilder抛出ArrayIndexOutOfBoundsException的探究

    对StringBuilder抛出ArrayIndexOutOfBoundsException的探究 - CSDN博客 https://blog.csdn.net/liu_005/article/det ...

  8. hadoop-client

    <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common --> <dependency> ...

  9. 主线程 view

    参考https://blog.csdn.net/u011001142/article/details/50912358

  10. js 时间戳精确值的问题

    最近做一个多图上传的功能,通过name + 时间戳命名,结果发现时间戳竟然一样,一直以为是代码逻辑的问题,结果出错在时间戳的获取上了. 关于时间戳的获取方式: 1.Date.parse() var d ...