大白书上的例题,具体讲解见大白书,最好用用一个Log数组直接求k,这样就是纯O(1)了

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define N 100003 int a[N],num[N],le[N],ri[N],cnt[N];
int d[N][],n,type; void RMQ_init()
{
int i,j;
for(i=;i<=type;i++)
d[i][] = cnt[i];
for(j=;(<<j)<=type;j++)
{
for(i=;i+(<<j)-<=type;i++)
d[i][j] = max(d[i][j-],d[i+(<<(j-))][j-]);
}
} int LOG[];
void getLog(int n)
{
for(int i=;i<=n;i++)
LOG[i] = (int)(log((double)i)/log(2.0));
} int RMQ(int l,int r)
{
int k = LOG[R-L+];
return max(d[l][k],d[r-(<<k)+][k]);
} int main()
{
int q,i,j,pos;
int l,r;
while(scanf("%d",&n)!=EOF && n)
{
scanf("%d",&q);
for(i=;i<=n;i++)
scanf("%d",&a[i]);
a[] = -;
type = ;
for(pos=;pos<=n;pos++)
{
if(a[pos] != a[pos-])
{
if(pos != )
cnt[type] = pos-le[pos-];
num[pos] = ++type;
for(j=le[pos-];j<=pos-;j++)
ri[j] = pos-;
le[pos] = pos;
if(pos == n)
cnt[type] = ,ri[pos] = pos;
}
else
{
le[pos] = le[pos-];
num[pos] = num[pos-];
if(pos == n)
{
cnt[type] = pos - le[pos] + ;
for(j=le[pos];j<=n;j++)
ri[j] = n;
}
}
}
RMQ_init();
while(q--)
{
scanf("%d%d",&l,&r);
if(num[l] == num[r])
{
printf("%d\n",r-l+);
continue;
}
int lmax = ri[l]-l+;
int rmax = r-le[r]+;
int mmax;
if(num[l]+ > num[r]-)
mmax = ;
else
mmax = RMQ(num[l]+,num[r]-);
printf("%d\n",max(mmax,max(lmax,rmax)));
}
}
return ;
}

UVA 11235 Frequent Values ---RMQ的更多相关文章

  1. RMQ算法 以及UVA 11235 Frequent Values(RMQ)

    RMQ算法 简单来说,RMQ算法是给定一组数据,求取区间[l,r]内的最大或最小值. 例如一组任意数据 5 6 8 1 3 11 45 78 59 66 4,求取区间(1,8)  内的最大值.数据量小 ...

  2. UVa 11235 Frequent values (RMQ && 区间出现最多次的数的次数)

    题意 : 给出一个长度为 n 的不降序序列,并且给出 q 个形如(L, R)的问询,问你这个区间出现的最多次的数的次数. 分析 : 很自然的想到将区间“缩小”,例如1 1 2 3 3 3就可以变成2 ...

  3. UVA 11235 Frequent values(RMQ)

    Frequent values TimeLimit:3000Ms , ... , an in non-decreasing order. In addition to that, you are gi ...

  4. UVA 11235 Frequent values 线段树/RMQ

    vjudge 上题目链接:UVA 11235 *******************************************************大白书上解释**************** ...

  5. UVA - 11235 Frequent values

    2007/2008 ACM International Collegiate Programming Contest University of Ulm Local Contest Problem F ...

  6. [POJ] 3368 / [UVA] 11235 - Frequent values [ST算法]

    2007/2008 ACM International Collegiate Programming Contest University of Ulm Local Contest Problem F ...

  7. POJ 3368 & UVA 11235 - Frequent values

    题目链接:http://poj.org/problem?id=3368 RMQ应用题. 解题思路参考:http://blog.csdn.net/libin56842/article/details/4 ...

  8. 数据结构(RMQ):UVAoj 11235 Frequent values

    Frequent values You are given a sequence of n integers a1 , a2 , ... , an in non-decreasing order. I ...

  9. poj 3368 Frequent values(RMQ)

    /************************************************************ 题目: Frequent values(poj 3368) 链接: http ...

随机推荐

  1. 【转】深入浅出Android Support Annotation

    [转自]http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0427/2797.html http://www.flysnow.org/201 ...

  2. [linux]CentOS无法使用epel源

    [linux]CentOS无法使用epel源 问题的产生与解决 作者作为Android应用开发者,对linux的接触一直是ubuntu为主,但是有一个用于科学上网的vps,由于内存只有64M,所以使用 ...

  3. Android-ListView类

    ListView组件在应用程序中可以说是不可或缺的一部分,ListView主要是显示列表数据,同时可以滚动查看,这篇博客主要是对ListView的基本用法进行说明,后面会依次对ListView点击动态 ...

  4. 【读书笔记】iOS-GCD-block-后台运行

    当一个app按home键退出的时候,只有最多5秒的时间做一些保存或清理资源的工作.但是调用beginBackgroundTaskWithExpirationHandler方法,可以最多有10分时间在后 ...

  5. Silverlight项目笔记7:xml/json数据解析、TreeView、引用类型与数据绑定错误、图片加载、虚拟目录设置、silverlight安全机制引发的问题、WebClient缓存问题

    1.xml/json数据解析 (1)xml数据解析 使用WebClient获取数据,获取到的数据实例化为一个XDocument,使用XDocument的Descendants(XName)方法获得对应 ...

  6. iOS之通过PaintCode快速实现交互动画的最方便方法 未解问题

    需求: 问题: 源码百度云下载链接: http://pan.baidu.com/s/1o7r4hCm 密码: 8atd 其他学习链接:http://www.jianshu.com/p/90d6cd35 ...

  7. iOS之UI--UITabBarController

    前言:跟UINavigationController类似,UITabBarController也可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型例子就是QQ.微信等应用. UITabBarCo ...

  8. Mac OS X 10.10 Yosemite下面解决XAMPP无法开启mysql的问题

    首次使用XAMPP但是却遇到一个MySQL无法启动的缘故,不知道怎么解决,经过百度 找到解决方案: 在xampp安装目录下找到xamp这个文件(默认路径是:/Applications/XAMPP/xa ...

  9. 魔改——MFC MDI程序 定制 文档模板 运行时全部打开 禁用关闭按钮

    ==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...

  10. PHP验证码

    设计一个验证码类,在需要的时候可以随时调用 验证码类,保存为ValidateCode.class.php <?php //验证码类 session_start(); class Validate ...