题目链接:http://poj.org/problem?id=3368

题目大意:

给出一个n个数长度的串。 m个询问

求出给定范围内的最大连续字符串的长度

方法:

RMQ模板, 记录每一个位置的数连续的次数。用RMQ求出每一个区间的最大连续字符的长度值

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>using namespace std;
const int maxn = 100010;
int A[maxn];
int Max[maxn][20];
int f[maxn];void RMQ(int n)
{int k = (int )(log(n) / log(2));for(int j=1; j<=k; j++)for(int i=1; i<=n; i++)if(i + (1<<j) - 1 <= n){Max[i][j] = max(Max[i][j-1], Max[i+(1<<(j-1))][j-1]);}
}int main()
{int n, q;while(~scanf("%d",&n) && n){scanf("%d",&q);memset(f, 0, sizeof(f));for(int i=1; i<=n ;i++){scanf("%d", &A[i]);if(A[i] == A[i-1] && i > 1)f[i] = f[i-1] + 1;else {f[i]++;}Max[i][0] = f[i];}RMQ(n);//for(int i=1; i<=n; i++)//   printf("%d ",f[i]);while(q--){int a, b;scanf("%d%d",&a,&b);int t = a;while(t <= b && A[t] == A[t-1])t++;int k = (int )(log(b-t+1)/log(2));int ans;if(t > b)ans = 0;else ans = max(Max[t][k], Max[b-(1<<k)+1][k]);printf("%d\n", max(ans,t-a));}}return 0;
}

POJ 3368 Frequent values (RMQ)相关推荐

  1. poj 3368 Frequent values rmq

    题意:给你一串数列,然后给你一个起终位置对,问你这个段序列里出现最多的出现了几次. 思路:一段序列里,无非就是三种情况,1,一组相同的数,2两组相同,3,3组或者更多组数,这样我们队每一组数的开头结束 ...

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

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

  3. POJ 3368 Frequent values 线段树区间合并

    题意O(-1)不用解释.. 线段树结点维护三个信息:区间内相同的数出现最多的次数maxc.区间左边第一个数出现的次数lc.区间右边第一个数出现的次数rc. 分左区间右端点和右区间左端点相同于否的情况合 ...

  4. 【线段树】FREQUENT - Frequent values(luogu-SP1684 / poj 3368)

    FREQUENT - Frequent values luogu-SP1684 poj 3368 题目大意: 有一个单调不降序列,让你求出某些区间内的出现次数最多的数出现的次数(有多组数据,以0结尾) ...

  5. UVA 11235 Frequent values(RMQ)

    Frequent values TimeLimit:3000Ms You are given a sequence of n integers a1 , a2 , ... , an in non-de ...

  6. Frequent values【线段树】

    Frequent values UVA - 11235 题目传送门 题目大意:给出一个非降序的整数数组a1,a2,a3...an,你的任务是对一系列的询问(i,j),回答ai,ai+1,ai+2... ...

  7. 【图灵杯 E也即POJ 3368】简单的RMQ

    Description 给定一个数组,其中的元素满足非递减顺序.任意给定一个区间[i,j],求其中某个元素重复出现的最大次数. Input 多组数据输入.每组数据的第一行包含两个整数n和q(1< ...

  8. POJ 2785 4 Values whose Sum is 0

    传送门:http://poj.org/problem?id=2785 解题思路: 从这四个数列中选择的话总有n的4次方中情况,所以全部判断一遍不可行.不过将他们对半分成AB和CD再考虑的话就可以解决了 ...

  9. poj 3264 Balanced Lineup RMQ问题 线段树

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

最新文章

  1. Service IntentService区别 (面试)
  2. android studio 控件提示大写
  3. python decode()函数 (使用登记用于编码的编解码器解码字节)
  4. 解决Oracle jdbc驱动包maven下载失败问题
  5. 揭秘华尔街人工智能真实水平:距离40%的金融民工被取代或只剩8年
  6. scala学习笔记-Map与Tuple(10)
  7. 返回值被忽略_《Jenkins Tips 001》 忽略 Shell 步骤中的故障
  8. java concurrent之前戏synchronized
  9. DDD:DomainEvent、ApplicationEvent、Command
  10. [读书笔记] Effective C++
  11. python小程序源代码_【程序源代码】微信商城小程序
  12. UUID 查看linux的UUID 与 SVN 工程的 UUID。(两者之间没有联系)
  13. .gitignore和“以下未跟踪的工作树文件将被签出覆盖”
  14. cubase DCOM connection to programe Synsopose.exe failed
  15. 爬虫 + 数据分析 - 7 CrawlSpider(全站爬取), 分布式, 增量式爬虫
  16. Android 购物选择颜色、尺码实现(二)
  17. 用excel做数据分析必知的编程语言
  18. 移动硬盘安装ubuntu20.04.5(重装无数次的一个教程)
  19. 微软自带输入法英文输入字母间间距忽然就变大了
  20. shading interp;

热门文章

  1. 解决android扫描二维码时,用户禁止权限报错问题
  2. xshell 设置屏幕字体
  3. JVM—内存模型JMM
  4. 高考数学经典题(001)
  5. jms、amqp、mqtt区别与联系
  6. Python爬虫(五)
  7. eclipse的下载JDK的安装与配置
  8. WinForm绘制柱形图
  9. MySQL LIMIT 如何改写成Oracle limit
  10. 首次使用eclipes运行项目报错“Java.lang.ClassNotFoundException”