POJ 3368 Frequent values (RMQ)
题目链接: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)相关推荐
- poj 3368 Frequent values rmq
题意:给你一串数列,然后给你一个起终位置对,问你这个段序列里出现最多的出现了几次. 思路:一段序列里,无非就是三种情况,1,一组相同的数,2两组相同,3,3组或者更多组数,这样我们队每一组数的开头结束 ...
- POJ 3368 Frequent values 【ST表RMQ 维护区间频率最大值】
传送门:http://poj.org/problem?id=3368 Frequent values Time Limit: 2000MS Memory Limit: 65536K Total S ...
- POJ 3368 Frequent values 线段树区间合并
题意O(-1)不用解释.. 线段树结点维护三个信息:区间内相同的数出现最多的次数maxc.区间左边第一个数出现的次数lc.区间右边第一个数出现的次数rc. 分左区间右端点和右区间左端点相同于否的情况合 ...
- 【线段树】FREQUENT - Frequent values(luogu-SP1684 / poj 3368)
FREQUENT - Frequent values luogu-SP1684 poj 3368 题目大意: 有一个单调不降序列,让你求出某些区间内的出现次数最多的数出现的次数(有多组数据,以0结尾) ...
- UVA 11235 Frequent values(RMQ)
Frequent values TimeLimit:3000Ms You are given a sequence of n integers a1 , a2 , ... , an in non-de ...
- Frequent values【线段树】
Frequent values UVA - 11235 题目传送门 题目大意:给出一个非降序的整数数组a1,a2,a3...an,你的任务是对一系列的询问(i,j),回答ai,ai+1,ai+2... ...
- 【图灵杯 E也即POJ 3368】简单的RMQ
Description 给定一个数组,其中的元素满足非递减顺序.任意给定一个区间[i,j],求其中某个元素重复出现的最大次数. Input 多组数据输入.每组数据的第一行包含两个整数n和q(1< ...
- POJ 2785 4 Values whose Sum is 0
传送门:http://poj.org/problem?id=2785 解题思路: 从这四个数列中选择的话总有n的4次方中情况,所以全部判断一遍不可行.不过将他们对半分成AB和CD再考虑的话就可以解决了 ...
- 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 ...
最新文章
- Service IntentService区别 (面试)
- android studio 控件提示大写
- python decode()函数 (使用登记用于编码的编解码器解码字节)
- 解决Oracle jdbc驱动包maven下载失败问题
- 揭秘华尔街人工智能真实水平:距离40%的金融民工被取代或只剩8年
- scala学习笔记-Map与Tuple(10)
- 返回值被忽略_《Jenkins Tips 001》 忽略 Shell 步骤中的故障
- java concurrent之前戏synchronized
- DDD:DomainEvent、ApplicationEvent、Command
- [读书笔记] Effective C++
- python小程序源代码_【程序源代码】微信商城小程序
- UUID 查看linux的UUID 与 SVN 工程的 UUID。(两者之间没有联系)
- .gitignore和“以下未跟踪的工作树文件将被签出覆盖”
- cubase DCOM connection to programe Synsopose.exe failed
- 爬虫 + 数据分析 - 7 CrawlSpider(全站爬取), 分布式, 增量式爬虫
- Android 购物选择颜色、尺码实现(二)
- 用excel做数据分析必知的编程语言
- 移动硬盘安装ubuntu20.04.5(重装无数次的一个教程)
- 微软自带输入法英文输入字母间间距忽然就变大了
- shading interp;