题目链接

/*
询问一段区间内的元素差值最大是多少,用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的更多相关文章

  1. [poj3264]rmq算法学习(ST表)

    解题关键:rmq模板题,可以用st表,亦可用线段树等数据结构 log10和log2都可,这里用到了对数的换底公式 类似于区间dp,用到了倍增的思想 $F[i][j] = \min (F[i][j - ...

  2. 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 ...

  3. 【ACM/ICPC2013】线段树题目集合(一)

    前言:前一段时间在网上找了一个线段树题目列表,我顺着做了一些,今天我把做过的整理一下.感觉自己对线段树了解的还不是很深,自己的算法能力还要加强.光练代码能力还是不够的,要多思考.向队友学习,向大牛学习 ...

  4. RMQ、POJ3264

    这里说几篇博客,建议从上到下看 https://blog.csdn.net/qq_31759205/article/details/75008659 https://blog.csdn.net/sgh ...

  5. 【POJ3264】Balanced Lineup(RMQ)

    题意:每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序列排队. 有一天, John 决定让一些牛们玩一场飞盘比赛. 他准备找一群在对列中为置连续的牛来进行比赛 ...

  6. POJ3264 Balanced Lineup [RMQ模板]

    题意:有n头牛,输入他们的身高,求某区间身高的极值的差(max-min), 用RMQ模板,同时构造求极大值和极小值的两个数组. //poj3264 #include <iostream> ...

  7. [POJ3264]Balanced Lineup(RMQ, ST算法)

    题目链接:http://poj.org/problem?id=3264 典型RMQ,这道题被我鞭尸了三遍也是醉了…这回用新学的st算法. st算法本身是一个区间dp,利用的性质就是相邻两个区间的最值的 ...

  8. POJ3264 【RMQ基础题—ST-线段树】

    ST算法Code: //#include<bits/stdc++.h> #include<cstdio> #include<math.h> #include< ...

  9. POJ-3264 Balanced Lineup(区间最值,线段树,RMQ)

    http://poj.org/problem?id=3264 Time Limit: 5000MS     Memory Limit: 65536K Description For the daily ...

随机推荐

  1. 7、Spring+Struts2+MyBaits(无映射接口实现类)

    1.创建userinfo.sql数据库脚本 create table userinfo (id ), name ), password ), telephone ), isadmin )); --4. ...

  2. python Asyncore.dispatcher 理解

    1.Asyncore是python的标准库.Asyncore.dispatcher 是这个库中的一个socket的框架,为socket添加了一些通用的回调方法,比如: def listen(self, ...

  3. Python之列表&元组&字典

    今天学习了Python的基本数据类型,做以下笔记,以备查用. 一.列表 列表的常用方法: 1.append()方法 def append(self, p_object): # real signatu ...

  4. ffmpeg编译

    CFLAGS=-g ./configure --enable-opengl  --disable-yasm  --enable-shared --enable-pic

  5. C的指针,真的很经典

    工作以后,一直使用C++,也做过Objective C,各种类的方法封装得很好,使用很简单,今天偶尔翻看一下 严蔚敏 的 <数据结构>,第一个程序demo就看了半天,一是由于demo的变量 ...

  6. NOIP2002-普及组复赛-第三题-选数

    题目描述 Description 已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n).从 n 个整数中任选 k 个整数相加,可分别得到一系列的和.例如当 n=4,k=3,4 个整 ...

  7. SharePoint 入门书籍推荐 转载来源http://www.cnblogs.com/jianyus/p/3513238.html

    最近,总有人说刚入门SharePoint,没有好的资料或者电子书,资料推荐大家多看看博客园和CSDN的博客.对于看博客,我一般是两个思路,要么找一个人的从头到尾看一遍,觉得有意义的,就把地址加收藏:或 ...

  8. erlang进程与操作系统线程

    erlang多进程与多线程: 在erlang开发中,我们面对的最小执行单位是进程,当然这个进程并不是系统层面上的进程,也不是线程.而是基于erlang运行时系统的一个进程.那么erlang的多进程是如 ...

  9. kvstore存储介质redis代码

    <?php /** * ShopEx licence * * @copyright Copyright (c) 2005-2010 ShopEx Technologies Inc. (http: ...

  10. Centos6.6安装Nginx

    1.在安装nginx之前,需要先安装该模块需要依赖包 yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel 2.安 ...