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. Introducing 'bind'

    原文地址:http://fsharpforfunandprofit.com/posts/computation-expressions-bind/ 上一篇讨论了如何理解let作为一个能实现contin ...

  2. 5、Web应用程序中的安全向量 -- Open Redirect Attack(开放重定向)

    开放重定向攻击的概念:那些通过请求(如查询字符串和表单数据)指定重定向URL的Web应用程序可能会被篡改,而把用户重定向到外部的恶意URL. 在执行重定向之前需先检查目标地址的有效性,可使用Url.I ...

  3. Visual Studio 2010/2013 UTF8编码调试时显示中文

    VisualStudio 2010 SP1环境 1.设置string默认编码为utf8,只需要在文件头部加入以下代码 #pragma execution_character_set("utf ...

  4. Openjudge-计算概论(A)-鸡兔同笼

    描述一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外).已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物输入第1行是测试数据的组数n,后面跟着n行输入.每组测试数 ...

  5. 浅谈 zookeeper 原理,安装和配置

    当前云计算流行, 单一机器额的处理能力已经不能满足我们的需求,不得不采用大量的服务集群.服务集群对外提供服务的过程中,有很多的配置需要随时更新,服务间需要协调工作,那么这些信息如何推送到各个节点?并且 ...

  6. wordpress建站过程4——index.php

    <?php get_header(); ?> <div id="primary" class="content-area col-md-9"& ...

  7. iosiOSlabel基本使用以及文字自适应

    (如果需要的不是使用的属性值如换行形式,可以把对应的属性在程序中书写然后按"command"+鼠标左键点击就可以查看所有属性值) 一label基本设置 self.view.back ...

  8. Word试卷文档模型化解析存储到数据库

    最近在搞一套在线的考试系统,有许多人反映试题的新增比较麻烦(需要逐个输入),于是呼就整个了试卷批量导入了 poi实现word转html 模型化解析html html转Map数组 Map数组(数组的操作 ...

  9. Entity Framework技巧系列之十二 - Tip 46 - 50

    提示46. 怎样使用Code-Only排除一个属性  这次是一个真正简单的问题,由StackOverflow上这个问题引出.  问题:  当我们使用Code-Only把一个类的信息告诉Entity F ...

  10. 【Machine Learning in Action --2】K-最近邻分类

    1.K-近邻算法(KNN)概述 K-近邻算法采用测量不同特征值之间的距离方法进行分类. 工作原理:存在一个样本数据集合(也称作训练样本集),并且样本集中每个数据都存在标签(即我们知道样本集中每一数据与 ...