求区间最值…(基础,继续)

code………..

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<string.h>
  4. #include<algorithm>
  5. using namespace std;
  6. const int N=50007;
  7. struct st{
  8. int left,right;
  9. int mina;
  10. int maxa;
  11. };
  12. st q[N*4];
  13. int n,m;
  14. void build(int num,int L,int R)
  15. {
  16. q[num].left=L;
  17. q[num].right=R;
  18. if(L==R)
  19. {
  20. scanf("%d",&q[num].maxa);
  21. q[num].mina=q[num].maxa;
  22. return;
  23. }
  24. build(2*num,L,(L+R)/2);
  25. build(2*num+1,(L+R)/2+1,R);
  26. q[num].mina=min(q[2*num].mina,q[2*num+1].mina);
  27. q[num].maxa=max(q[2*num].maxa,q[2*num+1].maxa);
  28. }
  29. int ans1;
  30. int ans2;
  31. int get_max(int num,int s,int t)
  32. {
  33. if(q[num].left>=s&&q[num].right<=t)
  34. return q[num].maxa;
  35. int mid=(q[num].left+q[num].right)/2;
  36. if(mid>=t)
  37. return get_max(2*num,s,t);
  38. else if(mid<s)
  39. return get_max(2*num+1,s,t);
  40. else{
  41. return max(get_max(2*num,s,mid),get_max(2*num+1,mid+1,t));
  42. }
  43. }
  44. int get_min(int num,int s,int t)
  45. {
  46. if(q[num].left>=s&&q[num].right<=t)
  47. return q[num].mina;
  48. int mid=(q[num].left+q[num].right)/2;
  49. if(mid>=t)
  50. return get_min(2*num,s,t);
  51. else if(mid<s)
  52. return get_min(2*num+1,s,t);
  53. else{
  54. return min(get_min(2*num,s,mid),get_min(2*num+1,mid+1,t));
  55. }
  56. }
  57. int main()
  58. {
  59. scanf("%d%d",&n,&m);
  60. build(1,1,n);
  61. while(m--)
  62. {
  63. int a,b;
  64. scanf("%d%d",&a,&b);
  65. printf("%d\n",get_max(1,a,b)-get_min(1,a,b));
  66. }
  67. return 0;
  68. }

POJ3264【线段树】的更多相关文章

  1. Balanced Lineup poj3264 线段树

    Balanced Lineup poj3264 线段树 题意 一串数,求出某个区间的最大值和最小值之间的差 解题思路 使用线段树,来维护最大值和最小值,使用两个查询函数,一个查区间最大值,一个查区间最 ...

  2. POJ3264线段树求最值

    刚开始还觉得有点怪怪的.因为想着如果每个树只是单纯地记录它所在的区间的话会不会有不在区间内的数据给更新了,但是我好像是傻掉了因为如果有这种情况出现的话在父亲节点就会分成l,mid和mid+1,r两个区 ...

  3. poj3264 线段树

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 44121   Accepted: 20715 ...

  4. POJ3264(线段树入门题)

    Balanced LineupCrawling in process... Crawling failed Time Limit:5000MS     Memory Limit:65536KB     ...

  5. poj3264(简单线段树)

    题目链接:https://vjudge.net/problem/POJ-3264 题意:线段树简单应用题,区间查询最大值和最小值的差. 思路:用线段树维护区间的最大值和最小值即可. AC代码: #in ...

  6. 几道简单的线段树入门题 POJ3264&&POJ3468&&POJ2777

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 40687   Accepted: 19137 ...

  7. [POJ3264]Balanced Lineup(线段树,区间最值差)

    题目链接:http://poj.org/problem?id=3264 一排牛按1~n标号记录重量,问每个区间最重的和最轻的差值. 线段树维护当前节点下属叶节点的两个最值,查询后作差即可. #incl ...

  8. POJ3264——Balanced Lineup(线段树)

    本文出自:http://blog.csdn.net/svitter 题意:在1~200,000个数中.取一段区间.然后在区间中找出最大的数和最小的数字.求这两个数字的差. 分析:按区间取值,非常明显使 ...

  9. poj3264(线段树区间求最值)

    题目连接:http://poj.org/problem?id=3264 题意:给定Q(1<=Q<=200000)个数A1,A2,```,AQ,多次求任一区间Ai-Aj中最大数和最小数的差. ...

  10. POJ3264(线段树求区间最大最小值)

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 41162   Accepted: 19327 ...

随机推荐

  1. 这个捕鱼游戏制作的真心不错,原创音乐,AV动作,让人流连忘返啊呵呵

     女生看完这篇文章后果断地命令男朋友打开电脑和手机 2014-10-10 茶娱饭后 本人纯屌丝宅男一名.专注游戏十年有余,玩过无数大大小小的游戏,对捕鱼游戏情有独钟.我不想说在捕鱼游戏方面有多专业 ...

  2. csu1116 Kingdoms 最小生成树-枚举状态

    题目链接: csu 1116 题意: 有一幅双向图连接N个城市(标号1~n,1表示首都)  每一个城市有一个价值W. 地震摧毁了全部道路,现给出可修复的m条道路并给出修复每条道路所需的费用 问在总费用 ...

  3. 第一次OllyDbg逆向记录(分析思路和注意点&其他文章)

    OllyDbg 操作菜单栏.工具栏.快捷键 C++调用加强 目录 OllyDbg 操作菜单栏.工具栏.快捷键    1 一.    载入观察    1 1.静态载入观察:    1 2.OD动态观察  ...

  4. Umbrella Header for Module Bolts does not include header &#39;XXXXXX.h&#39;?

    在我们引入第三方Framwork时.有时会出现如标题的警告提示? 怎样解决? Framework 将在下面文件夹下创建一个Module/,并创建一个module.modulemap文件 waterma ...

  5. 深入理解Atomic原子操作和volatile非原子性

    原子操作可以理解为: 一个数,很多线程去同时修改它,不加sync同步锁,就可以保证修改结果是正确的 Atomic正是采用了CAS算法,所以可以在多线程环境下安全地操作对象. volatile是Java ...

  6. Spark 学习笔记:(三)Spark SQL

    参考:https://spark.apache.org/docs/latest/sql-programming-guide.html#overview http://www.csdn.net/arti ...

  7. Spark 学习笔记:(二)编程指引(Scala版)

    参考: http://spark.apache.org/docs/latest/programming-guide.html 后面懒得翻译了,英文记的,以后复习时再翻. 摘要:每个Spark appl ...

  8. windows下安装RubbitMq

    1.下载 下载 rabbitMQ :http://www.rabbitmq.com/download.html,安装rabbitmq需要erlang,下载erlang:http://www.erlan ...

  9. 20170218-取值Domain

    1.通过视图DD07V, 例子:取SD 凭证类别的DOMAIN(VBTYP)DATA: LT_DD07V TYPE TABLE OF DD07V.SELECT * INTO T_DD07V FROM ...

  10. js与原生的交互

    一.与安卓的交互 Android与js通过WebView互相调用方法,实际上是: Android去调用JS的代码 JS去调用Android的代码 二者沟通的桥梁是WebView 对于android调用 ...