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. Java Object 对象创建的方式 [ 转载 ]

    Java Object 对象创建的方式 [ 转载 ] @author http://blog.csdn.net/mhmyqn/article/details/7943411 显式创建 有4种显式地创建 ...

  2. 7、Spring+Struts2+MyBaits(无映射接口实现类)

    1.创建userinfo.sql数据库脚本 create table userinfo (id ), name ), password ), telephone ), isadmin )); --4. ...

  3. 解决XCode插件在XCode6.4上失效的办法

    Xcode 6.4  解决 插件失效的方法 查看 插件目录: ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/ 邮件打开插件 ...

  4. ural 1355. Bald Spot Revisited(数的素因子划分)

    1355. Bald Spot Revisited Time limit: 1.0 secondMemory limit: 64 MB A student dreamt that he walked ...

  5. sql标识符和格式

    数据库名是一个标识符,表名也是一个标识符,在SQL SERVER中标识符分为两类: (1).常规标识符;(2).分隔标识符两者重要的区别:常规标识符必须严格遵守命名的规定,而分隔标识符则可以不遵守命名 ...

  6. samba server 设置

     samba server  设置yum install samba.x86_64systemctl start smb.servicesystemctl enable smb.servicesamb ...

  7. mvc的IIS 配置问题 runAllManagedModulesForAllRequests 与 HtmlFileHandler

    runAllManagedModulesForAllRequests 一般设置为false,当为true时所有的资源将进入mvc处理,无疑会给服务器加大压力. 解决办法是时使用HtmlFileHand ...

  8. UVALive - 3026 Period kmp next数组的应用

    input n 2<=n<=1000000 长度为n的字符串,只含小写字母 output Test case #cas 长度为i时的最小循环串 循环次数(>1) 若没有则不输出 做法 ...

  9. 用Jedis获取redis连接(集群和非集群状态下)

    第一:非集群状态下 非集群状态下用Jedis获取redis连接,得到Jedis对象即可,一共有两种: 1.利用Jedis构造器,仅限用于测试,在实际项目中肯定是用JedisPool. Jedis(St ...

  10. 点赞增加的jquery写法

    $('.dianzan').click(function(){ $(this).find('span').html(parseInt($(this).find('span').html())+1) } ...