题意:给出n个数和Q个询问(l,r),对于每个询问求出(l,r)之间连续出现次数最多的次数。

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<cstring>
  5. #include<cmath>
  6. #include<queue>
  7. #include<map>
  8. using namespace std;
  9. #define MOD 1000000007
  10. const int INF=0x3f3f3f3f;
  11. const double eps=1e-;
  12. typedef long long ll;
  13. #define cl(a) memset(a,0,sizeof(a))
  14. #define ts printf("*****\n");
  15. int n,m,tt;
  16. const int MAXN = ;
  17. int dp[MAXN][];
  18. int mm[MAXN];
  19. //初始化RMQ, b数组下标从1开始,从0开始简单修改
  20. void initRMQ(int n,int b[])
  21. {
  22. mm[] = -;
  23. for(int i = ; i <= n;i++)
  24. {
  25. mm[i] = ((i&(i-)) == )?mm[i-]+:mm[i-];
  26. dp[i][] = b[i];
  27. }
  28. for(int j = ; j <= mm[n];j++)
  29. for(int i = ;i + (<<j) - <= n;i++)
  30. dp[i][j] = max(dp[i][j-],dp[i+(<<(j-))][j-]);
  31. }
  32. //查询最大值
  33. int rmq(int x,int y)
  34. {
  35. int k = mm[y-x+];
  36. return max(dp[x][k],dp[y-(<<k)+][k]);
  37. }
  38. int a[MAXN],f[MAXN];
  39. int main()
  40. {
  41. int i,j,k;
  42. #ifndef ONLINE_JUDGE
  43. freopen("1.in","r",stdin);
  44. #endif
  45. while(scanf("%d",&n)!=EOF)
  46. {
  47. if(n==) break;
  48. scanf("%d",&m);
  49. for(i=;i<=n;i++)
  50. {
  51. scanf("%d",&a[i]);
  52. f[]=;
  53. if(i!=)
  54. {
  55. if(a[i]==a[i-])
  56. {
  57. f[i]=f[i-]+;
  58. }
  59. else
  60. f[i]=;
  61. }
  62. }
  63. /*for(i=1;i<=n;i++)
  64. {
  65. printf("%d ",f[i]);
  66. }
  67. printf("\n");*/
  68. initRMQ(n,f);
  69. while(m--)
  70. {
  71. int uu,v;
  72. scanf("%d%d",&uu,&v);
  73. int u=uu;
  74. while(u<=v&&a[u]==a[u-])
  75. {
  76. u++;
  77. }
  78. int ans=rmq(u,v);
  79. ans=max(u-uu,ans);
  80. printf("%d\n",ans);
  81. }
  82. }
  83. }

poj 3368 rmq ***的更多相关文章

  1. POJ 3368/RMQ/线段数

    题目链接 /* 给出一段序列,询问[L,R]区间内最大相同数的个数. 用一个很巧妙地方法,转化成求区间内的最大值的问题. RMQ维护区间最大值. MAX处理: */ for(int i=1;i< ...

  2. poj 3368(RMQ模板)

    题目链接:http://poj.org/problem?id=3368 题意:给出n个数和Q个询问(l,r),对于每个询问求出(l,r)之间连续出现次数最多的次数. 求解RMQ问题的算法有:搜索(比较 ...

  3. poj 3368 Frequent values(RMQ)

    /************************************************************ 题目: Frequent values(poj 3368) 链接: http ...

  4. POJ 3368 RMQ-ST

    一直感觉RMQ水,没自己写过,今天写了一道题,算是完全独立写的,这感觉好久没有了... 一直以来,都是为了亚洲赛学算法,出现了几个问题: 1.学的其实只是怎么用算法,对算法的正确性没有好好理解,或者说 ...

  5. POJ 3368 & UVA 11235 - Frequent values

    题目链接:http://poj.org/problem?id=3368 RMQ应用题. 解题思路参考:http://blog.csdn.net/libin56842/article/details/4 ...

  6. poj 3368 Frequent values(RMQ)

    题目:http://poj.org/problem?id=3368 题意:给定n个数,顺序为非下降,询问某个区间内的数出现最多的数的 出现次数.. 大白书上的 例题..算是RMQ变形了, 对 原数组重 ...

  7. POJ 3368 Frequent values (基础RMQ)

    Frequent values Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 14742   Accepted: 5354 ...

  8. POJ 3368 Frequent values 【ST表RMQ 维护区间频率最大值】

    传送门:http://poj.org/problem?id=3368 Frequent values Time Limit: 2000MS   Memory Limit: 65536K Total S ...

  9. POJ 3368 Frequent values(RMQ 求区间出现最多次数的数字的次数)

    题目链接:http://poj.org/problem? id=3368 Description You are given a sequence of n integers a1 , a2 , .. ...

随机推荐

  1. json字符串和Json对象,以及json的基本了解

    考虑到python等语言中没有更好表示json对象的方法,所以使用JavaScript来介绍json 首先是json字符串: var str1 = '{ "name": " ...

  2. Linux-Xshell会话保持

    1.Xshell客户端设置 2.服务端设置 修改/etc/ssh/sshd_config文件,找到 ClientAliveInterval 0和ClientAliveCountMax 3并将注释符号( ...

  3. SQL记录-PLSQL事务

    PL/SQL事务   数据库事务是一个工作的原子单元,其可以由一个或多个相关的SQL语句组成.所谓的原子性就是数据库的修改所带来的构成事务的SQL语句可以集体被提交,即永久到数据库或从数据库中(撤消) ...

  4. Dubbo学习笔记4:服务消费端泛化调用与异步调用

    本文借用dubbo.learn的Dubbo API方式来解释原理. 服务消费端泛化调用 前面我们讲解到,基于Spring和基于Dubbo API方式搭建简单的分布式系统时,服务消费端引入了一个SDK二 ...

  5. 使用 maven 搭建web开发基本架构

    我觉得可能,对于还没有使用过 IDEA 进行开发的童鞋来说,直接撸代码是有些尴尬的.那么我会把示例代码之前的那些事再在这里写一遍 按图步骤进行即可进行基本项目结构搭建 现在基本流行 maven 管理项 ...

  6. SCI写作经典替换词

  7. [原]Android开发优化-Adapter优化

    ListView作为Android开发中使用频率最高的一个控件,保证ListView的流畅运行,对用户体验的提高至关重要.Adapter是ListView和数据源之间的中间人,当每条数据进入可见区时, ...

  8. HDU 4506 小明系列故事——师兄帮帮忙(二分快速幂)

    题意:就是输入一个数组,这个数组在不断滚动,而且每滚动一次后都要乘以一个数,用公式来说就是a[i] = a[i-1] * k;然后最后一位的滚动到第一位去. 解题报告:因为题目中的k要乘很多次,达到了 ...

  9. 第5月第10天 node.js的request模块

    1.node.js的request模块 http://www.cnblogs.com/meteoric_cry/archive/2012/08/18/2645530.html

  10. RabbitMQ集群下队列存放消息的问题

    RabbitMQ中队列有两种模式 1.默认 Default 2.镜像 Mirror [类似于mongoDB,从一直在通过主的操作日志来进行同步] *如果将队列定义为镜像模式,那么这个队列也将区分主从, ...