POJ 3368
题意: 给你一组数列, 查询区间内有出现次数最多的数的频数
RMQ ,
对于一个区间, 分为两部分, 从 L 开始连续到 T , T + 1 到 R
显然 答案为 MAX (T – L + 1 , RMQ ( T+1, R))
对于 T, 可以先预处理出位置 Pos
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 100000 + 131;
int Pos[maxn];
int Num[maxn];
int d[maxn][30];
int Fun[maxn];
int n, m; void RMQ_init()
{
for(int i = 0; i < n; ++i) d[i][0] = Fun[i];
for(int j = 1; (1<<j) <= n; ++j)
for(int i = 0; i + (1<<j) - 1 < n; ++i)
d[i][j] = max(d[i][j-1], d[i+(1<<(j-1))][j-1]);
} int RMQ(int L, int R)
{
int k = 0;
while((1<<(k+1)) <= R-L+1) k++;
return max(d[L][k], d[R-(1<<k)+1][k]);
} int main()
{
while(scanf("%d",&n) != EOF)
{
if(n == 0) break;
scanf("%d",&m);
for(int i = 0; i < n; ++i) scanf("%d",&Num[i]);
for(int i = 0; i < n; ++i)
{
if(i == 0) Fun[i] = 1;
else
{
if(Num[i] == Num[i-1]) Fun[i] = Fun[i-1] + 1;
else Fun[i] = 1;
}
}
//for(int i = 0; i < n; ++i) cout << Fun[i];
//cout <<endl; ////////////////////////
int Now = Num[n-1], pos = n-1;
for(int i = n-1; i >= 0; --i)
{
if(Num[i] == Now)
Pos[i] = pos;
else
{
Now = Num[i];
Pos[i] = i;
pos = i;
}
}
/*for(int i = 0; i < n; ++i) cout << Pos[i];
cout <<endl;*/
//////////////////////////
RMQ_init();
//cout << RMQ(2,5) <<endl;
int l, r;
for(int i = 0; i < m; ++i)
{
scanf("%d%d",&l,&r);
l--, r--;
int t = Pos[l];
//cout << t << endl;
if(t >= r)
{
printf("%d\n",r-l+1);
continue;
}
else
printf("%d\n", max(t-l+1,RMQ(t+1,r)));
}
}
}
POJ 3368的更多相关文章
- poj 3368 Frequent values(RMQ)
/************************************************************ 题目: Frequent values(poj 3368) 链接: http ...
- POJ 3368 RMQ-ST
一直感觉RMQ水,没自己写过,今天写了一道题,算是完全独立写的,这感觉好久没有了... 一直以来,都是为了亚洲赛学算法,出现了几个问题: 1.学的其实只是怎么用算法,对算法的正确性没有好好理解,或者说 ...
- poj 3368 Frequent values(RMQ)
题目:http://poj.org/problem?id=3368 题意:给定n个数,顺序为非下降,询问某个区间内的数出现最多的数的 出现次数.. 大白书上的 例题..算是RMQ变形了, 对 原数组重 ...
- POJ 3368/RMQ/线段数
题目链接 /* 给出一段序列,询问[L,R]区间内最大相同数的个数. 用一个很巧妙地方法,转化成求区间内的最大值的问题. RMQ维护区间最大值. MAX处理: */ for(int i=1;i< ...
- POJ 3368 & UVA 11235 - Frequent values
题目链接:http://poj.org/problem?id=3368 RMQ应用题. 解题思路参考:http://blog.csdn.net/libin56842/article/details/4 ...
- poj 3368 Frequent values -Sparse-Table
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 16537 Accepted: 5981 Description You ...
- poj 3368(RMQ模板)
题目链接:http://poj.org/problem?id=3368 题意:给出n个数和Q个询问(l,r),对于每个询问求出(l,r)之间连续出现次数最多的次数. 求解RMQ问题的算法有:搜索(比较 ...
- POJ 3368 Frequent values (基础RMQ)
Frequent values Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 14742 Accepted: 5354 ...
- 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(线段树区间合并)
[题目链接] http://poj.org/problem?id=3368 [题目大意] 有一个有序序列,要求区间查询出现次数最多的数 [题解] 维护每个区间左端点和右端点,以及左右的长度,还有区间的 ...
随机推荐
- tedu训练营day02
1.Linux命令 1.关机.重启 关机 :init 0 重启 :init 6 2.rm 1.rm -rf 文件/目录 r :递归删除文件夹内的子文件夹 f :强制删除,force 2.练习 1.在用 ...
- authenticate验证的流程
from django.contrib.auth import authenticate # 默认的第一个加密算法 class PBKDF2PasswordHasher(BasePasswordHas ...
- 【二】JConsole、VisualVM
监控工具 jconsole.exe 只有10几k,真正的代码是包装在tools.jar中. 双击[本地线程]:sun.tools.jconsole.JConsole: 内存的线在上下起伏,证明是[垃圾 ...
- linux关闭防火墙及开放端口
1) 重启后生效 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后失效 开启: service iptables sta ...
- [译]kendoui - 方法和事件
原文 为了使用方法和事件,首先要获取到widget实例. 获取widget 一共有3种获取widget的方式. jQuery的data方法 将widget的名作为参数传给jQuery的data方法.( ...
- springboot13 发布和监听事件
spring中的事件驱动模型Event(也叫发布订阅模式),是观察者模式的一个典型的应用 好处:业务解耦,在不影响原来业务逻辑的情况下,加入其它业务 场景: app上线后已实现用户注册功能,现需要在用 ...
- table的复制 SqlServer 数据库添加临时表(select 字段1,字段2,字段3 into)
select 字段1,字段2,字段3 into tempname form table where table.id=1; oralce : insert into MID_DRUG_DETA ...
- Docker 随 docker服务重启
在创建时添加 重启 docker run --restart=always -d --name web -p : -v /data/web:/usr/local/tomcat/webapps tom ...
- 数据库设计理论与实践·<三>物理设计
一.物理设计核心任务与关键细节 二.物理设计经验之谈 1.数据类型的设计:建议字段数据类型定义时结合以下几点(以MYSQL为例) 1)不适用image,而使用varbinary等 2)不使用text和 ...
- 数据库设计理论与实践·<一>总结
一.数据库生命周期 数据库生命周期流程图如下: 二.各阶段附图 附图1.1 数据流图 附图1.2 数据字典-方式1 补充说明:数据字典既可以单张表格表示,也可以多种(数据项表/数据结构表/数据流表/外 ...