区间的最大值和最小值

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <cmath>
  4. #include <iostream>
  5. using namespace std;
  6. const int MAXN = ;
  7. int n,query;
  8. int num[MAXN];
  9.  
  10. int F_Min[MAXN][],F_Max[MAXN][];
  11.  
  12. void Init()
  13. {
  14. for(int i = ; i <= n; i++)
  15. {
  16. F_Min[i][] = F_Max[i][] = num[i];
  17. }
  18.  
  19. for(int i = ; (<<i) <= n; i++) //按区间长度递增顺序递推
  20. {
  21. for(int j = ; j+(<<i)- <= n; j++) //区间起点
  22. {
  23. F_Max[j][i] = max(F_Max[j][i-],F_Max[j+(<<(i-))][i-]);
  24. F_Min[j][i] = min(F_Min[j][i-],F_Min[j+(<<(i-))][i-]);
  25. }
  26. }
  27. }
  28.  
  29. int Query_max(int l,int r)
  30. {
  31. int k = (int)(log(double(r-l+))/log((double)));
  32. return max(F_Max[l][k], F_Max[r-(<<k)+][k]);
  33. }
  34.  
  35. int Query_min(int l,int r)
  36. {
  37. int k = (int)(log(double(r-l+))/log((double)));
  38. return min(F_Min[l][k], F_Min[r-(<<k)+][k]);
  39. }
  40.  
  41. int main()
  42. {
  43. int a,b;
  44. scanf("%d %d",&n,&query);
  45. for(int i = ; i <= n; i++)
  46. scanf("%d",&num[i]);
  47. Init();
  48. while(query--)
  49. {
  50. scanf("%d %d",&a,&b);
  51. printf("区间%d到%d的最大值为:%d\n",a,b,Query_max(a,b));
  52. printf("区间%d到%d的最小值为:%d\n",a,b,Query_min(a,b));
  53. printf("区间%d到%d的最大值和最小值只差为:%d\n",a,b,Query_max(a,b)-Query_min(a,b));
  54. }
  55. return ;
  56. }

区间内出现次数最多的数字出现的次数

  1. #include <cstdio>
  2. #include <cmath>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. const int maxn = ;
  7. int num[maxn], f[maxn], MAX[maxn][];
  8. int n;
  9. int max(int a,int b)
  10. {
  11. return a>b ? a:b;
  12. }
  13. int rmq_max(int l,int r)
  14. {
  15. if(l > r)
  16. return ;
  17. int k = log((double)(r-l+))/log(2.0);
  18. return max(MAX[l][k],MAX[r-(<<k)+][k]);
  19. }
  20. void init()
  21. {
  22. for(int i = ; i <= n; i++)
  23. {
  24. MAX[i][] = f[i];
  25. }
  26. int k = log((double)(n+))/log(2.0);
  27. for(int i = ; i <= k; i++)
  28. {
  29. for(int j = ; j+(<<i)- <= n; j++)
  30. {
  31. MAX[j][i] = max(MAX[j][i-],MAX[j+(<<(i-))][i-]);
  32. }
  33. }
  34. }
  35. int main()
  36. {
  37. int a, b, q;
  38. while(scanf("%d",&n) && n)
  39. {
  40. scanf("%d",&q);
  41. for(int i = ; i <= n; i++)
  42. {
  43. scanf("%d",&num[i]);
  44. }
  45. sort(num+,num+n+);
  46. for(int i = ; i <= n; i++)
  47. {
  48. if(i == )
  49. {
  50. f[i] = ;
  51. continue;
  52. }
  53. if(num[i] == num[i-])
  54. {
  55. f[i] = f[i-]+;
  56. }
  57. else
  58. {
  59. f[i] = ;
  60. }
  61.  
  62. }
  63.  
  64. init();
  65.  
  66. for(int i = ; i <= q; i++)
  67. {
  68. scanf("%d%d",&a,&b);
  69. int t = a;
  70. while(t<=b && num[t]==num[t-])
  71. {
  72. t++;
  73. }
  74. int cnt = rmq_max(t,b);
  75. int ans = max(t-a,cnt);
  76. printf("%d\n",ans);
  77. }
  78. }
  79. return ;
  80. }
  81. /*
  82. 10 3
  83. -1 -1 1 2 1 1 1 10 10 10
  84. 2 3
  85. 1 10
  86. 5 10
  87. */

RMQ 区间最大值最小值 最频繁次数的更多相关文章

  1. RMQ 区间最大值 最小值查询

    /*RMQ 更新最小值操作 By:draymonder*/ #include <iostream> #include <cstdio> using namespace std; ...

  2. POJ3264 Balanced Lineup 线段树区间最大值 最小值

    Q个数 问区间最大值-区间最小值 // #pragma comment(linker, "/STACK:1024000000,1024000000") #include <i ...

  3. RMQ区间最大值与最小值查询

    RMQ复杂度:建表$O\left ( nlgn \right ) $,查询$O\left ( 1 \right )$ ll F_Min[maxn][20],F_Max[maxn][20]; void ...

  4. dutacm.club 1094: 等差区间(RMQ区间最大、最小值,区间GCD)

    1094: 等差区间 Time Limit:5000/3000 MS (Java/Others)   Memory Limit:163840/131072 KB (Java/Others)Total ...

  5. poj 3264 区间最大最小值 RMQ问题之Sparse_Table算法

    Balanced Lineup Time Limit: 5000 MS Memory Limit: 0 KB 64-bit integer IO format: %I64d , %I64u Java ...

  6. Tunnel Warfare (区间合并|最大值最小值巧妙方法)

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

  7. RMQ区间最值查询

    RMQ区间最值查询 概述 RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A, 回答若干询问RMQ(A,i,j)(i,j<= ...

  8. poj 3264 线段树 求区间最大最小值

    Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same ...

  9. hdu 3183 A Magic Lamp RMQ ST 坐标最小值

    hdu 3183 A Magic Lamp RMQ ST 坐标最小值 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3183 题目大意: 从给定的串中挑 ...

随机推荐

  1. Oracle诊断:drop table失败[转]

    转: From <http://blog.csdn.net/cyxlxp8411/article/details/7775113> 今天在drop一张表的时候报ORA-00054错误 SQ ...

  2. Codeforces Aim Tech Round4 (Div2) D

    题目链接: 题意: 给你一个严格升序的单链表,但是是用数组来存放的.对于每一个位置来说,你可以知道这个位置的值和下一个的位置.你每一个可以询问一个位置,机器会告诉你这个位置的值,和下一个位置的指针.要 ...

  3. 清北学堂2019.7.18 & 清北学堂2019.7.19

    Day 6 钟皓曦 经典题目:石子合并 可以合并任意两堆,代价为数量的异或(^)和 f[s]把s的二进制所对应石子合并成一堆所花代价 枚举s的子集 #include<iostream> u ...

  4. fiddler之入门(安装配置)

    在工作中常常需要进行数据的抓包和发包,此时就可以用到fiddler这个工具了. fiddler是一个http协议调试代理工具,通过http代理,让数据从其通过,来坚挺本地计算机与访问网络之间的所有ht ...

  5. C#与Java覆盖问题

    C#继承类中如含有相同的方法,避免冲突使用new关键字.在不同对象中分别对应该方法.若使用override关键字则,基类中的方法被覆盖. 如需调用非覆盖的则使用base关键字. Java中的继承类方法 ...

  6. CSS3——表单 计数器 网页布局 应用实例

    CSS应用实例 表单 实例 输入框样式 输入框填充-----内边距 输入框------边框 输入框-----颜色 输入框-----聚焦 输入框-------图标 输入框------动画 [自动右滑] ...

  7. 【ABAP系列】SAP ABAP 从FTP服务器读取文件到本地

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 从FTP服务器 ...

  8. 【ABAP系列】SAP Web Dynpro 技术简介

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP Web Dynpro 技 ...

  9. CNN文本分类

    CNN用于文本分类本就是一个不完美的解决方案,因为CNN要求输入都是一定长度的,而对于文本分类问题,文本序列是不定长的,RNN可以完美解决序列不定长问题, 因为RNN不要求输入是一定长度的.那么对于C ...

  10. 【linux开发】apt源设置

    不同的网络状况连接以下源的速度不同, 建议在添加前手动验证以下源的连接速度(ping下就行),选择最快的源可以节省大批下载时间. 首先备份源列表: sudo cp /etc/apt/sources.l ...