POJ 3264-Balanced Lineup-RMQ问题
裸RMQ问题
#include <cstdio>
#include <algorithm>
#include <cstring> using namespace std; const int MAXN = ; int min_dp[MAXN][],max_dp[MAXN][];
int min_mm[MAXN],max_mm[MAXN];
int b[MAXN];
int N,Q; void min_initRMQ(int n,int b[])
{
min_mm[] = -;
for(int i=;i<=n;i++)
{
min_mm[i] = ( (i&(i-)) == ) ? min_mm[i-]+ : min_mm[i-];
min_dp[i][] = b[i];
}
for(int j=;j<=min_mm[n];j++)
for(int i=;i + (<<j) - <= n;i++)
min_dp[i][j] = min(min_dp[i][j-],min_dp[i+(<<(j-))][j-]); } int min_rmq(int x,int y)
{
int k = min_mm[y-x+];
return min(min_dp[x][k],min_dp[y-(<<k)+][k]);
} void max_initRMQ(int n,int b[])
{
max_mm[] = -;
for(int i=;i<=n;i++)
{
max_mm[i] = ( (i&(i-)) == ) ? max_mm[i-]+ : max_mm[i-];
max_dp[i][] = b[i];
}
for(int j=;j<=max_mm[n];j++)
for(int i=;i + (<<j) - <= n;i++)
max_dp[i][j] = max(max_dp[i][j-],max_dp[i+(<<(j-))][j-]); } int max_rmq(int x,int y)
{
int k = max_mm[y-x+];
return max(max_dp[x][k],max_dp[y-(<<k)+][k]);
} int main()
{
//freopen("input.in","r",stdin);
while(~scanf("%d%d",&N,&Q))
{
for(int i=;i<=N;i++)
{
scanf("%d",&b[i]);
}
min_initRMQ(N,b);
max_initRMQ(N,b); for(int i=,l,r;i<Q;i++)
{
scanf("%d%d",&l,&r);
printf("%d\n",max_rmq(l,r) - min_rmq(l,r) );
//printf("%d\n",max_rmq(l,r));
}
}
}
POJ 3264-Balanced Lineup-RMQ问题的更多相关文章
- Poj 3264 Balanced Lineup RMQ模板
题目链接: Poj 3264 Balanced Lineup 题目描述: 给出一个n个数的序列,有q个查询,每次查询区间[l, r]内的最大值与最小值的绝对值. 解题思路: 很模板的RMQ模板题,在这 ...
- poj 3264 Balanced Lineup (RMQ)
/******************************************************* 题目: Balanced Lineup(poj 3264) 链接: http://po ...
- POJ - 3264 Balanced Lineup (RMQ问题求区间最值)
RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值,也就 ...
- poj 3264 Balanced Lineup (RMQ算法 模板题)
RMQ支持操作: Query(L, R): 计算Min{a[L],a[L+1], a[R]}. 预处理时间是O(nlogn), 查询只需 O(1). RMQ问题 用于求给定区间内的最大值/最小值问题 ...
- POJ 3264 Balanced Lineup -- RMQ或线段树
一段区间的最值问题,用线段树或RMQ皆可.两种代码都贴上:又是空间换时间.. RMQ 解法:(8168KB 1625ms) #include <iostream> #include < ...
- POJ 3264 Balanced Lineup RMQ ST算法
题意:有n头牛,编号从1到n,每头牛的身高已知.现有q次询问,每次询问给出a,b两个数.要求给出编号在a与b之间牛身高的最大值与最小值之差. 思路:标准的RMQ问题. RMQ问题是求给定区间内的最值问 ...
- POJ 3264 Balanced Lineup 【ST表 静态RMQ】
传送门:http://poj.org/problem?id=3264 Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total S ...
- poj 3264 Balanced Lineup(RMQ裸题)
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 43168 Accepted: 20276 ...
- POJ 3264 Balanced Lineup(RMQ)
点我看题目 题意 :N头奶牛,Q次询问,然后给你每一头奶牛的身高,每一次询问都给你两个数,x y,代表着从x位置上的奶牛到y位置上的奶牛身高最高的和最矮的相差多少. 思路 : 刚好符合RMQ的那个求区 ...
- POJ 3264 Balanced Lineup【线段树区间查询求最大值和最小值】
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 53703 Accepted: 25237 ...
随机推荐
- git 的 cat-file 的命令用法
命令选项 git cat-file 的命令显示版本库对象的内容.类型.及大小信息. -t Instead of the content, show the object type identifie ...
- ASP.Net Core2.1中的HttpClientFactory系列一:HttpClient的缺陷
引言: ASP.NET Core2.1 中出现了一个新的 HttpClientFactory 功能, 它有助于解决开发人员在使用 HttpClient 实例从其应用程序中访问外部 web 资源时可能遇 ...
- mockjs使用
/** * 使用mockjs来mock数据, 提供mock数据API接口 */ import Mock from 'mockjs' import data from './data.json' //注 ...
- Meterpreter常⻅见⽤用法
0x01 背景 meterpreter作为后渗透模块有多种类型,并且命令由核⼼心命令和扩展库命令组成,极⼤大的丰富了了攻击⽅方式. 需要说明的是meterpreter在漏漏洞洞利利⽤用成功后会发送第二 ...
- poj2104 主席树裸题
空间大小:n*lgn 复杂度:建树n*lgn 查询lgn #include <cstdio> #include <iostream> #include <algorit ...
- Five Dimensional Points CodeForces - 851C (计算几何+暴力)
C. Five Dimensional Points time limit per test 2 seconds memory limit per test 256 megabytes input ...
- Largest Rectangle in a Histogram HDU - 1506 (单调栈)
A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rec ...
- python os模块详解
一.Python os模块(Linux环境) 1.1 执行shell命令 os.system('cmd') 执行命令不保存结果 os.popen('command') 执行后返回结果,使用.read( ...
- 一个出色的表格(React实现__ES5语法)
本文主要是<React快速上手开发>一书中,第三章的内容代码整理,因为书中的代码零零散散,所以自己将整理了一下. 排序和编辑功能 <script> var header = [ ...
- JMeter学习non-gui模式运行
-h, --help print usage information and exit #打印帮助信息 -v, --version print the version information and ...