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 ...
随机推荐
- 为什么大公司一定要使用DevOps?
0 DevOps的意图 究竟什么是DevOps? 要想回答这个问题,首先要明确DevOps这个过程参与的人员是谁?即开发团队和IT运维团队!那么,DevOps的意图是什么呢?即在两个团队之间,建立良好 ...
- .NET 框架 Microsoft .NET Framework (更新至.NET Framework4.8)
https://dotnet.microsoft.com/download/dotnet-framework 产品名称 离线安装包 .NET Framework 4.8 点击下载 .NET Frame ...
- 前后端分离的利器:fiddler的实用功能举例
# 前后端分离的利器:fiddler的实用功能举例 ##what's fiddler fiddler是一款代理软件,对于前后端分离开发非常重要.可以说,如果前端开发没有用上fiddler或类似软件,那 ...
- Microsoft Tech Summit 2018 课程简述:利用 Windows 新特性开发出更好的手绘视频应用
概述 Microsoft Tech Summit 2018 微软技术暨生态大会将于10月24日至27日在上海世博中心举行,这也会是国内举办的最后一届 Tech Summit,2019 年开始会以 Mi ...
- quartz获取缓存中所有运行中的Job
原文地址:https://blog.csdn.net/zzm8421/article/details/77769203 Quartz 2.1.5: public static void getAllJ ...
- Win10系统如何安装Linux Mint
导读 随着windows10系统免费升级期限的靠近,越来越多朋友都将自己的电脑系统升级到了win10正式版.今天,小编就要在这里为大家分享Windows10系统安装Linux Mint的方法,希望能够 ...
- 漫谈数组去重复方法(亮点是ES6的新API)
方法1: 利用遍历的思想来进行. <!DOCTYPE html><html lang="en"><head> <meta charset= ...
- Windows和Linux的Jmeter分布式集群压力测试
Windows的Jmeter分布式集群压力测试 原文:https://blog.csdn.net/cyjs1988/article/details/80267475 在使用Jmeter进行性能测试时, ...
- java8新特性:interface中的static方法和default方法
java8中接口有两个新特性,一个是静态方法,一个是默认方法. static方法 java8中为接口新增了一项功能:定义一个或者多个静态方法. 定义用法和普通的static方法一样: public i ...
- outline,box-shadow,border-radius小例子
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...