POJ3264/RMQ
/*
询问一段区间内的元素差值最大是多少,用RMQ维护一个最大值和一个最小值,相减即可。
*/
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=50000+5;
int h;
int dpmax[maxn][18];
int dpmin[maxn][18];
int n,q;
int k=0;
int RMQ(int l,int r)
{
int k=0;
while((1<<(k+1)<=(r-l+1)))
k++;
return max(dpmax[l][k],dpmax[r-(1<<k)+1][k])-min(dpmin[l][k],dpmin[r-(1<<k)+1][k]);
}
int main ()
{
while(~scanf("%d%d",&n,&q))
{
/*
if(k)
{
memset(dpmax,0,sizeof(dpmax));
memset(dpmin,0,sizeof(dpmin));
}
*/
for(int i=0;i<n;i++)
{
scanf("%d",&h);
dpmax[i][0]=h;
dpmin[i][0]=h;
}
for(int k=1;(1<<k)<=n;k++)
for(int i=0;i+(1<<k)-1<n;i++)
{
dpmax[i][k]=max(dpmax[i][k-1],dpmax[i+(1<<(k-1))][k-1]);
dpmin[i][k]=min(dpmin[i][k-1],dpmin[i+(1<<(k-1))][k-1]);
}
int l,r;
for(int i=0;i<q;i++)
{
scanf("%d%d",&l,&r);
printf("%d\n",RMQ(l-1,r-1));
}
k++;
}
return 0;
}
POJ3264/RMQ的更多相关文章
- [poj3264]rmq算法学习(ST表)
解题关键:rmq模板题,可以用st表,亦可用线段树等数据结构 log10和log2都可,这里用到了对数的换底公式 类似于区间dp,用到了倍增的思想 $F[i][j] = \min (F[i][j - ...
- POJ3264 (RMQのST解法)
For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One d ...
- 【ACM/ICPC2013】线段树题目集合(一)
前言:前一段时间在网上找了一个线段树题目列表,我顺着做了一些,今天我把做过的整理一下.感觉自己对线段树了解的还不是很深,自己的算法能力还要加强.光练代码能力还是不够的,要多思考.向队友学习,向大牛学习 ...
- RMQ、POJ3264
这里说几篇博客,建议从上到下看 https://blog.csdn.net/qq_31759205/article/details/75008659 https://blog.csdn.net/sgh ...
- 【POJ3264】Balanced Lineup(RMQ)
题意:每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序列排队. 有一天, John 决定让一些牛们玩一场飞盘比赛. 他准备找一群在对列中为置连续的牛来进行比赛 ...
- POJ3264 Balanced Lineup [RMQ模板]
题意:有n头牛,输入他们的身高,求某区间身高的极值的差(max-min), 用RMQ模板,同时构造求极大值和极小值的两个数组. //poj3264 #include <iostream> ...
- [POJ3264]Balanced Lineup(RMQ, ST算法)
题目链接:http://poj.org/problem?id=3264 典型RMQ,这道题被我鞭尸了三遍也是醉了…这回用新学的st算法. st算法本身是一个区间dp,利用的性质就是相邻两个区间的最值的 ...
- POJ3264 【RMQ基础题—ST-线段树】
ST算法Code: //#include<bits/stdc++.h> #include<cstdio> #include<math.h> #include< ...
- POJ-3264 Balanced Lineup(区间最值,线段树,RMQ)
http://poj.org/problem?id=3264 Time Limit: 5000MS Memory Limit: 65536K Description For the daily ...
随机推荐
- Cmake常用指令
1. cmake_minimum_required(VERSION 2.8) 检查cmake的版本,至少为2.8 2. project(helloworld) ...
- sql表命名规范
tb_new_Count 新闻内容表:首先表加tb_,如果是视图则加V_存储过程加_p. 下划线后面要大写. 切记.(萌萌的国庆要加油)
- html5 让IE6,7支持HTML5语义化标签的文件
https://github.com/aFarkas/html5shiv/blob/master/src/html5shiv.js 只要应用这个js就行了
- tomcat配置多个虚拟主机
先修改默认端口(8080),http的默认端口是80,我们将8080改成80,这样域名就不用带上端口了 修改conf文件夹下的server.xml文件 添加多个主机(以下三个主机对应三个域名,三个域名 ...
- 杭电21题 Palindrome
Problem Description A palindrome is a symmetrical string, that is, a string read identically from le ...
- 杭电15题 The Cow Lexicon
Problem Description Few know that the cows have their own dictionary with W (1 ≤ W ≤ 600) words, eac ...
- 正则匹配 sql语句参数
List<string> listcommand = new List<string>(); string sql = "update BMDMB set bmdmb ...
- Android中的Fragment页面切换和selector选择器
效果如图: 提示:下面是用的整个的图片 下面看代码: //--------------------这是主页面布局文件----------------------- <?xml version=& ...
- Oracle 10gR2 Dataguard搭建(非duplicate方式)
Oracle 10gR2 Dataguard搭建(非duplicate方式) 我的实验环境: 源生产库(主库): IP地址:192.168.1.30 Oracle 10.2.0.5 单实例 新DG库( ...
- Dialog对话框管理工具类
import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; i ...