大白书上的例题,具体讲解见大白书,最好用用一个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. 一、PBNI环境搭建及初步使用

    PowerBuilder Native Interface(PowerBuilder本机接口PBNI)允许将第3方程序转换为PowerBuilder对象,供PowerBuilder直接使用,也允许将P ...

  2. sqlite3之基本操作(一)

    简单的介绍 SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身.它是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经 ...

  3. 小白初学ABP框架,着实累啊

    这几天在学习ABP相关的知识AutoMapper ,AngularJS,Less,DI(dependencyInjection),EntityFramework code first以及相关NuGet ...

  4. android 回调函数二:应用实例

    前言:如果对android回调的概念不明白的请看:android 回调函数一:基本概念 1.定义接口 package com.app.util; public interface ZYJCallBac ...

  5. NavigationController的使用整理

    1.设置NavigationBar的背景色: self.navigationController.navigationBar.barTintColor = [UIColor redColor]; 2. ...

  6. IOS 应用跳转 (IOS9白名单)

    跳转到指定app的实现 IOS中应用的跳转是通过URL实现的,因此在实现应用跳转之前我们要设置一下对应的URL. 图一(寻找配置软件的URL) 图二(具体配置选项) 注意: 如果IOS版本为IOS9 ...

  7. Win7下:编译器错误信息: CS0016: 未能写入输出文件

    错误如下: "/"应用程序中的服务器错误. 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误消息: CS ...

  8. FFT教你做乘法(FFT傅里叶变换)

    题目来源:https://biancheng.love/contest/41/problem/C/index FFT教你做乘法 题目描述 给定两个8进制正整数A和B(A和B均小于10000位),请利用 ...

  9. linux NFS服务器安装与配置 思路

    一,nfs服务优缺点 NFS 是Network File System的缩写,即网络文件系统,可以让不同的客户端挂载使用同一个目录,作为共享存储使用,这样可以保证不同的节点客户端数据一致性,在集群架构 ...

  10. TXT记事本转换PDF文件

    使用的方式为,读取TXT记事本的内容,然后写入创建的PDF文件. static void Main(string[] args) { const string txtFile = "D:\\ ...