input

1<=n,q<=100000

升序序列a1 a2 a3 ... an -100000<=ai<=100000

q行i j   1<=i,j<=n

输入结束标志n=0

output

对于每行i,j输出区间[i,j]中出现最多的数的个数

RMQ问题,处理的时候要合并区间

 #include <cstdio>
#include <queue>
#include <cstring>
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <map>
#include <set> using namespace std; int a[][],b[][],n,q,d[][];//a[i][0]是第i个数,a[i][1]是第i个数在b数组中的下标,b[i][0]是开始的下标,b[1][1]是连续的个数 void RMQ_init()
{
for(int i=;i<n;i++)
d[i][]=;
for(int j=;(<<j)-<n;j++)
for(int i=;i+(<<j)-<n;i++)
{
int i1=i+(<<(j-));
d[i][j]=max(d[i][j-],d[i1][j-]);
if(a[i1-][]==a[i1][])//区间中间合并
{
//printf("i=%d j=%d d=%d\n",i,j,d[i][j]);
int beg,end,idx=a[i1][];
beg=max(b[idx][],i);
end=min(b[idx][]+b[idx][]-,i+(<<j)-);
//printf("beg=%d end=%d\n",beg,end);
d[i][j]=max(d[i][j],end-beg+);
//printf("d=%d\n",d[i][j]);
}
}
} int RMQ(int l,int r)
{
int k=;
while((<<(k+))<=r-l+) k++;
int maxd,beg,end,idx=r-(<<k)+;
maxd=max(d[l][k],d[idx][k]);
//区间合并
beg=max(b[a[idx][]][],l);
end=min(b[a[idx][]][]+b[a[idx][]][]-,r);
//printf("beg=%d end=%d\n",beg,end);
return max(maxd,end-beg+);
} int main()
{
freopen("/home/user/桌面/in","r",stdin);
while(scanf("%d",&n)==&&n)
{
scanf("%d",&q);
memset(b,,sizeof(b));
scanf("%d",&a[][]);
int j=;
a[][]=;
b[][]=;
b[][]=;
for(int i=;i<n;i++)
{
scanf("%d",&a[i][]);
if(a[i][]==a[i-][])
{
b[j][]++;
a[i][]=j;
}
else
{
j++;
b[j][]=i;
b[j][]++;
a[i][]=j;
}
}
//for(int i=0;i<n;i++) printf("%d %d\n",a[i][0],a[i][1]);
//for(int i=0;i<=j;i++) printf("%d %d\n",b[i][0],b[i][1]);
RMQ_init();
for(int i=,l,r;i<q;i++)
{
scanf("%d%d",&l,&r);
printf("%d\n",RMQ(l-,r-));
}
}
return ;
}

UVa11235 RMQ的更多相关文章

  1. UVa11235 FrequentValues(RMQ)

    Problem F: Frequent values You are given a sequence of n integers a1 , a2 , ... , an in non-decreasi ...

  2. UVA-11235 Frequent values (RMQ)

    题目大意:在一个长度为n的不降序列中,有m次询问,每次询问(i,j)表示在区间(i,j)中找出出现次数最多的元素的出现次数. 题目分析:因为序列有序,可以将序列分段,并且记录每段的元素个数.每一个元素 ...

  3. BZOJ 3489: A simple rmq problem

    3489: A simple rmq problem Time Limit: 40 Sec  Memory Limit: 600 MBSubmit: 1594  Solved: 520[Submit] ...

  4. UVA 11235Frequent values(RMQ)

    训练指南P198 题意:给出一个非降序排列的整数数组a1, a2…… an,你的任务是对于一系列询问(i,j),回答ai, ai+1 ……aj 中出现的次数最多的次数 这题不仅学到了rmq的应用还学到 ...

  5. 51nod1174(RMQ)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1174 题意:中文题诶- 思路:RMQ模板题 关于RMQ: h ...

  6. 2016 ACM/ICPC Asia Regional Dalian Online 1008 Function 二分+RMQ

    Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submissio ...

  7. Gym 100646 F Tanks a Lot RMQ

    Problem F: Tanks a Lot Imagine you have a car with a very large gas tank - large enough to hold what ...

  8. (RMQ版)LCA注意要点

    inline int lca(int x,int y){ if(x>y) swap(x,y); ]][x]]<h[rmq[log[y-x+]][y-near[y-x+]+]])? rmq[ ...

  9. 洛谷P2412 查单词 [trie树 RMQ]

    题目背景 滚粗了的HansBug在收拾旧英语书,然而他发现了什么奇妙的东西. 题目描述 udp2.T3如果遇到相同的字符串,输出后面的 蒟蒻HansBug在一本英语书里面找到了一个单词表,包含N个单词 ...

随机推荐

  1. hdu_5884_Sort(二分+单调队列)

    题目链接:hdu_5884_Sort 题意: 有n个数,每个数有个值,现在你可以选择每次K个数合并,合并的消耗为这K个数的权值和,问在合并为只有1个数的时候,总消耗不超过T的情况下,最小的K是多少 题 ...

  2. Udemy - Angular 2 - The Complete Guide 笔记

    1. install > npm install -g angular-cli 2. create app > ng new first-app 3. build app > cd ...

  3. MSSQL记录

    批量添加: DECLARE @GID INT,@UID INT,@Indexs INTSET @GID=1SET @UID=37SET @Indexs=0WHILE @GID<674 --674 ...

  4. 如何将编译出来的images拷贝到windows下面刷机

    由于SPRD的刷机工具ResearchDownload运行在window环境下:这样,我们平时在开发环境下编译出来的镜像文件就不能直接用于刷机了. 这里涉及到一个双系统中文件共享的方法.由于企业信息安 ...

  5. a标签包含块级元素问题

    a标签包含块级元素是不符合W3c标准的,但是淘宝也有这样的布局暂且认为可以这样(有时候布局需要这样写) 当a标签包含了div这样的块级元素时a标签是要转换成块级元素的使用display:block.但 ...

  6. 3.编写BinIoDemo.java的Java应用程序,程序完成的功能是:完成1.doc文件的复制,复制以后的文件的名称为自己的学号姓名.doc。

    package zuoye; import java.io.FileInputStream; import java.io.FileOutputStream; public class BinIoDe ...

  7. 全排列dfs算法

    如下 #include <iostream> using namespace std; #define MAX 10 #define _CRT_SECURE_NO_WARNINGS int ...

  8. C++设计模式-参考资料

    设计模式实例讲解: http://www.cnblogs.com/jiese/tag/ http://www.cnblogs.com/wanggary/category/294620.html 设计模 ...

  9. web跨域问题

    环境: win7_x64旗舰版.Google Chrome-v44.0.2403.155.node-v0.10.29.express-v3.2.5.jQuery-v1.8.3 一.跨域GET: 客户端 ...

  10. Android 透明状态栏&着色状态栏

    Android 5.0 及以上实现方式(android在5.0之后引入Material Design 实现方式相对简单) 透明状态栏,背景浸入状态栏 if (Build.VERSION.SDK_INT ...