Description
给定一个数组,其中的元素满足非递减顺序。任意给定一个区间[i,j],求其中某个元素重复出现的最大次数。

Input
多组数据输入。每组数据的第一行包含两个整数n和q(1<=n,q<=100000),下一行包含n个整数a1,…,an(-100000<=ai<=100000,i∈{1,…,n}),用空格分隔,数列是升序的(ai<=ai+1)。接下来的q行,每行包含两个整数i和j(1<=i<=j<=n),表示给定区间[i,j]。
输入结束于0(自成一行)。

Output
对输入的q个区间,每个区间输出一个整数表示该区间内重复最多的元素出现的次数,用换行分隔。

Sample Input
10 3
-1 -1 1 1 1 1 3 10 10 10
2 3
1 10
5 10
0
Sample Output
1
4
3

【题目链接】:http://oj.acmclub.cn/problem.php?cid=1162&pid=4

【题意】

【题解】

构造一个数组b;

if(a[i]==a[i-1])b[i] = b[i-1]+1;
elseb[i] = 1;

这个b数组
就表示第i个数字前面有多少个连续数字是和它相等的;
这样对于每一个区间L,R
除了最左端的b[L]以及右端的连续的a[i]==a[L]的位置不能肯定就一定有B[L]个以外,其他的都能确定出现次数最多的就是b的最大值;
这里可以再O(N)求出从该位置开始往后连续的有多少长度和这个位置的a[i]相同;设为dp[i]
则一开始令t=min(dp[L],R-L+1),L=L+dp[i];
然后取【L,R】中的b的最大值和t取较大值作为答案;(L>R的话,答案就是t)

【Number Of WA】

1

【完整代码】

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define ll long long
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
using namespace std;
const int N = 1e5;
int n, q;
int a[N+5], b[N+5], mx[N<<2],dp[N+5];
void build(int l,int r,int rt)
{if(l==r){mx[rt] = b[l];return ;}int m = (l+r)>>1;build(lson);build(rson);mx[rt] = max(mx[rt<<1], mx[rt<<1|1]);
}
int query(int L,int R,int l,int r,int rt)
{if(L<=l && r<=R)return mx[rt];int m = (l+r)>>1;int ans = 1;if(L<=m)ans = max(ans,query(L,R,lson));if(R>m)ans = max(ans,query(L,R,rson));return ans;
}
int main()
{//freopen("F:\\rush.txt","r",stdin);//ios::sync_with_stdio(false);while(scanf("%d",&n)!=EOF){if (n==0) break;scanf("%d",&q);a[0] = -1e7;memset(b,0,sizeof(b));for(int i=1; i<=n; ++i){scanf("%d",&a[i]);if(a[i]==a[i-1])b[i] = b[i-1]+1;elseb[i] = 1;}dp[n] = 1;for (int i = n-1;i >= 1;i--)if (a[i+1]==a[i]){dp[i] = dp[i+1]+1;}elsedp[i] = 1;build(1,n,1);while(q--){int L,R;scanf("%d%d",&L,&R);int t=0;t = min(dp[L],R-L+1);L = L + t;if(L>R)printf("%d\n",t);elseprintf("%d\n",max(t,query(L,R,1,n,1)));}}
}

转载于:https://www.cnblogs.com/AWCXV/p/7626259.html

【图灵杯 E也即POJ 3368】简单的RMQ相关推荐

  1. POJ 3368 Frequent values (RMQ)

    题目链接:http://poj.org/problem?id=3368 题目大意: 给出一个n个数长度的串. m个询问 求出给定范围内的最大连续字符串的长度 方法: RMQ模板, 记录每一个位置的数连 ...

  2. poj 3368 Frequent values rmq

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

  3. 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛(同步赛)解题报告

    第八届"图灵杯"NEUQ-ACM程序设计竞赛个人赛(同步赛) 题目总结 A题 切蛋糕 题目信息 解题思路 如果我们将 1/k展开到二进制的形式,那么就可以计算出 需要 多少块1/( ...

  4. 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛题解

    第八届"图灵杯"NEUQ-ACM程序设计竞赛个人赛题解 先抱怨一下,这场比赛的题锅太多了,而且正赶上状态不好,Ac 1/12就离谱.. H 数羊 给定n,m(1≤n≤109,0≤m ...

  5. 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛非官方题解

    文章目录 7-1 切蛋糕 7-2 小宝的幸运数组 7-3 上进的凡凡 7-4 Seek the Joker I 7-5 Seek the Joker II 7-6 成绩查询ING 7-7 贪吃的派蒙 ...

  6. 第八届“图灵杯”NEUQ—ACM程序设计竞赛个人赛(同步赛)

    A题--切蛋糕 龙龙有一块蛋糕,现在他想将蛋糕平均切成k块,分给他的k名hxd.但是不幸的是,因为龙龙不擅长切蛋糕,他每一次只能将一块蛋糕平均分成两份.例如,将一块大小为1的蛋糕分割成两块大小为1/2 ...

  7. NEUQ图灵杯之A题——蔡老板的会议

    题目意思很简单,就是求最短路,但是,路径是单向的,所以要正着dij一遍,反着dij一遍,再求两次和的最大值,也可以创建两个图,这样,只要对两个图分别dij一遍一次,就不要写两个dij函数了,普通dij ...

  8. 第四届“图灵杯”NEUQ-ACM程序设计人赛真题重现

    文章目录 前言 系列文章目录 一.蔡老板的会议 题目描述 分析 AC代码如下: 二.拿糖果 题目描述 分析 AC代码如下: 三.粉丝与分割平面 题目描述 分析 AC代码如下: 四.粉丝与汉诺塔 题目描 ...

  9. 第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛前十题(能力有限)

    A - 大学期末现状 题目描述 作为一名大学生的你,现在又到了期末查成绩的时候,当你的成绩大于等于60时请输出"jige,haoye!",否则输出"laoshi,caic ...

最新文章

  1. 最大匹配、最小顶点覆盖、最大独立集、最小路径覆盖(转)
  2. QT关于全局变量的申请以及使用,所有class可用同一个变量
  3. 【uniapp】swiper 添加click事件
  4. 【lua学习】6.函数,闭包,错误处理
  5. 多亏了这篇文章,我的开发效率远远领先于我的同事
  6. 2020年9月25日-01-项目启动(团队分工)+带宽,网络速度的计算
  7. python return用法_初学Python要了解什么 装饰器知识汇总有哪些
  8. 尚硅谷全套课件整理:Java、前端、大数据、安卓、面试题
  9. TCP Timestamp选项
  10. C++重载运算符的规则详解
  11. 静态HTML模板渲染
  12. 右键新建文件夹_教你修改Windows万年不变的黄色文件夹,让文件也不枯燥
  13. 几个支持SCORM的免费平台
  14. 【ArcGIS教程】土地利用转移矩阵及土地利用数据获取
  15. w10投影全屏设置_win10投影仪怎么铺满全屏|win10投影器全屏的设置方法
  16. solidworks装配教程:快速给装配体添加新零件
  17. python程序设计的选择题_智慧树Python程序设计基础选择题答案
  18. mongodb 分组获取最新一条的数据
  19. 开机提示小娜无法在本计算机运行,win10 20h2提示此应用无法在你的电脑上运行解决方法...
  20. 分支-12. 计算火车执行时间(15)

热门文章

  1. while循环练习23
  2. NOIP 2005 过河
  3. ​求1000以内是3或者是5的倍数的值的和
  4. 实用window2008之七 :路由器配置应用实例
  5. LeetCode数据库 178. 分数排名
  6. sublime安装mysql_ubuntu安装mysql pycharm sublime
  7. python内嵌函数和闭包与java 匿名内部类_Java匿名内部类构造原理分析
  8. Python——四大内置高阶函数(map、reduce、filter、sorted)
  9. Filecoin网络目前总质押量约为4018万枚FIL
  10. SAP License:国网面试手记