RMQ支持操作:

Query(L, R):  计算Min{a[L],a[L+1], a[R]}。

预处理时间是O(nlogn), 查询只需 O(1)。

RMQ问题 用于求给定区间内的最大值/最小值问题。。询问的次数多的时候 好用。。

这个题目我至少得开数组开到 80000才能过,不知道为什么。。刚开始还写错了,贡献了好多RE和WA..

题目:http://poj.org/problem?id=3264

题意:给n个数,q次询问,求最值的差。。

 #include <iostream>
#include <cstdio>
using namespace std;
const int maxn = ;
const int maxm = ;
int d_min[maxn][maxm],d_max[maxn][maxm],a[maxn];
int n; void RMQ_init()
{
int i,j;
for(i = ; i <= n; i++)
{
d_min[i][] = a[i];
d_max[i][] = a[i];
}
for(j = ; (<<j) <= n; j++)
for(i = ; i + j - <= n; i++)
{
d_min[i][j] = min(d_min[i][j-],d_min[i + (<<(j-))][j-]);
d_max[i][j] = max(d_max[i][j-],d_max[i + (<<(j-))][j-]);
}
} int RMQ_min(int l,int r)
{
int k = ;
while((<<(k+)) <= r-l+)
k++;
return min(d_min[l][k], d_min[r-(<<k)+][k]);
}
int RMQ_max(int l,int r)
{
int k = ;
while((<<(k+)) <= r-l+)
k++;
return max(d_max[l][k], d_max[r-(<<k)+][k]);
}
int main()
{
int q,l,r,i;
scanf("%d%d",&n,&q);
for(i = ; i <= n; i++)
scanf("%d",&a[i]);
RMQ_init(); while(q--)
{
scanf("%d%d",&l,&r);
printf("%d\n",RMQ_max(l,r)-RMQ_min(l,r));
}
return ;
}

我的模板:

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
const int maxn = ;
const int maxm = ;
int d_min[maxn][maxm],d_max[maxn][maxm],a[maxn];
int n; void RMQ_init()
{
int i,j;
for(i = ; i <= n; i++) //数组下标从1开始的。
{
d_min[i][] = a[i];
d_max[i][] = a[i];
}
for(j = ; (<<j) <= n; j++)
for(i = ; i + j - <= n; i++)
{
d_min[i][j] = min(d_min[i][j-],d_min[i + (<<(j-))][j-]);
d_max[i][j] = max(d_max[i][j-],d_max[i + (<<(j-))][j-]);
}
} int RMQ_min(int l,int r)
{
int k = ;
while((<<(k+)) <= r-l+)
k++;
return min(d_min[l][k], d_min[r-(<<k)+][k]);
}
int RMQ_max(int l,int r)
{
int k = ;
while((<<(k+)) <= r-l+)
k++;
return max(d_max[l][k], d_max[r-(<<k)+][k]);
}
int main()
{
int i,l,r;
cin>>n;
for(i = ; i <= n; i++) //数组下标从1开始的。
cin>>a[i];
RMQ_init();
while(cin>>l>>r)
{
cout<<RMQ_min(l,r)<<endl;
cout<<RMQ_max(l,r)<<endl;
}
return ;
}

poj 3264 Balanced Lineup (RMQ算法 模板题)的更多相关文章

  1. Poj 3264 Balanced Lineup RMQ模板

    题目链接: Poj 3264 Balanced Lineup 题目描述: 给出一个n个数的序列,有q个查询,每次查询区间[l, r]内的最大值与最小值的绝对值. 解题思路: 很模板的RMQ模板题,在这 ...

  2. poj 3264 Balanced Lineup (RMQ)

    /******************************************************* 题目: Balanced Lineup(poj 3264) 链接: http://po ...

  3. [POJ] 3264 Balanced Lineup [ST算法]

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 34306   Accepted: 16137 ...

  4. POJ - 3264 Balanced Lineup (RMQ问题求区间最值)

    RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值,也就 ...

  5. POJ 3264 Balanced Lineup RMQ ST算法

    题意:有n头牛,编号从1到n,每头牛的身高已知.现有q次询问,每次询问给出a,b两个数.要求给出编号在a与b之间牛身高的最大值与最小值之差. 思路:标准的RMQ问题. RMQ问题是求给定区间内的最值问 ...

  6. POJ 3264 Balanced Lineup(ST模板)

    链接:http://poj.org/problem?id=3264 题意:给n个数,求一段区间L,R的最大值 - 最小值,Q次询问 思路:ST表模板,预处理区间最值,O(1)复杂度询问 AC代码: # ...

  7. POJ 3264 Balanced Lineup -- RMQ或线段树

    一段区间的最值问题,用线段树或RMQ皆可.两种代码都贴上:又是空间换时间.. RMQ 解法:(8168KB 1625ms) #include <iostream> #include < ...

  8. POJ 3264 Balanced Lineup(RMQ)

    点我看题目 题意 :N头奶牛,Q次询问,然后给你每一头奶牛的身高,每一次询问都给你两个数,x y,代表着从x位置上的奶牛到y位置上的奶牛身高最高的和最矮的相差多少. 思路 : 刚好符合RMQ的那个求区 ...

  9. POJ 3264 Balanced Lineup 【ST表 静态RMQ】

    传送门:http://poj.org/problem?id=3264 Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total S ...

随机推荐

  1. 在myeclipse中使用Java语言进行spark Standalone模式应用程序开发

    一.环境配置 Myeclipse中虽然已经集成了maven插件,但是由于这个插件版本较低,建立maven project会出现错误. 解决办法:自己到官网http://maven.apache.org ...

  2. 三大主流开源硬件对比:Arduino vs BeagleBone vs Raspberry Pi

    个人总结: Arduino就是个AVR单片机,个人觉得更适合玩电子的,社区也很活跃. BeagleBone是ARM Cortex-A8,属于嵌入式,价格高于Pi,但是许多方面拥有超越 Pi 的优 势, ...

  3. hibernate中增加annotation @后不提示信息【转】

    此文转自:http://blog.knowsky.com/252047.htm 所需要用到的3个jar包分别是: hibernate-annotations.jar ejb3-persistence. ...

  4. C# 该行已经属于另一个表 的解决方法[转]

    该文转自:http://blog.sina.com.cn/s/blog_48e4c3fe0100nzs6.html DataTable dt = new DataTable(); dt = ds.Ta ...

  5. Codeforces Round #285 (Div. 1) A. Misha and Forest 拓扑排序

    题目链接: 题目 A. Misha and Forest time limit per test 1 second memory limit per test 256 megabytes 问题描述 L ...

  6. Mysql登录异常的一个问题:

    问题描述: 正常在启动mysql的时候是这样的: 1. win打开输入界面: 2. 输入cmd命令,鼠标右键选择“以管理员身份运行”: 3, 之后再在界面输入登录mysql的登录语句: mysq -u ...

  7. C#文件对话框,一次多选文件设置

    OpenFileDialog ofd = new OpenFileDialog();ofd.Multiselect = true;if (ofd.ShowDialog() == DialogResul ...

  8. Emmet快速编写CSS样式

    基本的CSS样式编写时,很多样式只需输入首字母即可得到不带属性值的CSS样式,像上面说到的margin. 1.而对于一些带有特定的属性值的CSS样式,只需输入CSS标签与属性值的首字母就可以,比如: ...

  9. Unity3D研究院之IOS全自动打包生成ipa

    接着上一篇文章, 自动生成framework,这篇文章我把shell自动化打包ipa整理了一下,希望大家喜欢,嘿嘿.. 建议大家先看一下上一篇文章.http://www.xuanyusong.com/ ...

  10. ECMALL目录结构设置与数据库表

    [Ecmall]ECMALL目录结构设置与数据库表   最近在做ecmall的开发,ecmall在开源方面还有待进步啊,官方没有提供开发文档,也没有关于系统架构组织的贡献,使用者都要自己从0开始,官方 ...