大白书上的例题,具体讲解见大白书,最好用用一个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. 动态创建JS

    var element=document.createElement('script'); element.setAttribute('src', './js/move.js'); document. ...

  2. Java集合 Json集合之间的转换

    1. Java集合转换成Json集合 关键类:JSONArray jsonArray = JSONArray.fromObject(Object obj); 使用说明:将Java集合对象直接传进JSO ...

  3. Matlab2014a 提示未找到支持的编译器或 SDK的解决方法

    最近在写论文,用到了matlab版本的libsvm,在混合编译的时候遇到的一点小问题. 我电脑上装的是matlab2014a,window7 64位 >> mbuild -setup 错误 ...

  4. 初学Node(二)package.json文件

    package.json简介 package.json在Node项目中用于描述项目的一些基本信息,以及依赖的配置,一般每一个Node项目的根目录下都有一个package.json文件. 在项目的根目录 ...

  5. 升级sp1后文档无法编辑

    现象: A problem occurred while connecting to the server. If the problem continues, contact your admini ...

  6. 带缓存的输入输出-bufferedinputstream类与bufferedoutputstream类

    package hengzhe.cn.o1; import java.io.*; /* * 带缓存的输入输出-bufferedinputstream类与bufferedoutputstream类 * ...

  7. Android 程序目录及UI的简介

    Android程序的目录结构 src:源码的组织管理目录. gen:自动生成的目录,会生成一些重要的文件,如R.java,该目录一般不需要我们编写. assets:该目录文件不会被编译成二进制编码,多 ...

  8. 【读书笔记】iOS-查看一个软件ipa包的内容

    一,打开itunes----->我的iPhone应用程序. 二,右键点击app---->在Finder中显示---->出现下图所示界面. 三,将上图中的ipa包拷贝到桌面,如下图所示 ...

  9. 【转】Windows的多线程编程,C/C++

    在Windows的多线程编程中,创建线程的函数主要有CreateThread和_beginthread(及_beginthreadex). CreateThread 和 ExitThread    使 ...

  10. UnityShader之Shader分类篇【Shader资料2】

    关于ShaderLab,从我个人的理解上来看应该是分为三种类型. 1.Fixed function shader 固定渲染管线Shader,基于用于高级Shader在老显卡无法显示时的Fallback ...