题目描述

每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序列排队. 有一天, John 决定让一些牛们玩一场飞盘比赛. 他准备找一群在对列中为置连续的牛来进行比赛. 但是为了避免水平悬殊,牛的身高不应该相差太大. John 准备了Q (1 <= Q <= 200,000) 个可能的牛的选择和所有牛的身高 (1 <= 身高 <= 1,000,000). 他想知道每一组里面最高和最低的牛的身高差别.

输入输出格式

输入格式:

第1行:N,Q

第2到N+1行:每头牛的身高

第N+2到N+Q+1行:两个整数A和B,表示从A到B的所有牛。(1<=A<=B<=N)

输出格式:

输出每行一个数,为最大数与最小数的差

输入输出样例

输入样例#1:

6 3
1
7
3
4
2
5
1 5
4 6
2 2

输出样例#1:
6
3
0

思路:一道 RMQ 模版题,每次询问区间 [a,b] 的极差,预处理最大值与最小值的 ST 表后,相减即为答案

源代码

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<bitset>
#define EPS 1e-9
#define PI acos(-1.0)
#define INF 0x3f3f3f3f
#define LL long long
#define Pair pair<int,int>const int MOD = 1E9+7;
const int N = 1000000+5;
const int dx[] = {-1,1,0,0,-1,-1,1,1};
const int dy[] = {0,0,-1,1,-1,1,-1,1};
using namespace std;int dpMax[N][20];
int dpMin[N][20];
int a[N];
void initMax(int n){//初始化最大值查询for(int i=1;i<=n;i++)dpMax[i][0]=a[i];for(int j=1;(1<<j)<=n;j++)for(int i=1;i+(1<<j)-1<=n;i++)dpMax[i][j]=max(dpMax[i][j-1],dpMax[i+(1<<(j-1))][j-1]);
}
int getMax(int L,int R){//查询最大值//int k = (int)(log10(R-L+1)/log10(2));int k=0;while((1<<(k+1))<=R-L+1)k++;return max(dpMax[L][k],dpMax[R-(1<<k)+1][k]);
}void initMin(int n){//初始化最小值查询for(int i=1;i<=n;i++)dpMin[i][0]=a[i];for(int j=1;(1<<j)<=n;j++)for(int i=1;i+(1<<j)-1<=n;i++)dpMin[i][j]=min(dpMin[i][j-1],dpMin[i+(1<<(j-1))][j-1]);
}
int getMin(int L,int R){//查询最小值//int k = (int)(log10(R-L+1)/log10(2));int k=0;while((1<<(k+1))<=R-L+1)k++;return min(dpMin[L][k],dpMin[R-(1<<k)+1][k]);
}
int main(){int n,m;scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)scanf("%d",&a[i]);initMax(n);initMin(n);for(int i=1;i<=m;i++){int left,right;scanf("%d%d",&left,&right);int maxx=getMax(left,right);int minn=getMin(left,right);printf("%d\n",maxx-minn);}return 0;
}

平衡的阵容(洛谷-P2880)相关推荐

  1. 洛谷P4016 负载平衡问题

    洛谷P4016 负载平衡问题 题目大意: G 公司有 n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 n 个仓库的库存数量相同.搬运货物时,只 能在相邻的仓库之间 ...

  2. 题解 洛谷 P3069 [USACO13JAN]牛的阵容Cow Lineup

    洛谷P3069[USACO13JAN]牛的阵容CowLineup\color{#00F}{洛谷\ P3069\ [USACO13JAN]牛的阵容Cow Lineup}洛谷 P3069 [USACO13 ...

  3. 模拟退火总结+洛谷模板题(P1337 [JSOI2004]平衡点 / 吊打XXX)

    原来就听说过模拟退火,然后一直觉得神奇,但是没有真正的去实现这个算法. 模拟退火对TSP之类的问题很实用. 1.概念:模拟退火算法(Simulate Anneal,SA)是一种通用概率演算法,用来在一 ...

  4. [洛谷P3391] 文艺平衡树 (Splay模板)

    初识splay 学splay有一段时间了,一直没写...... 本题是splay模板题,维护一个1~n的序列,支持区间翻转(比如1 2 3 4 5 6变成1 2 3 6 5 4),最后输出结果序列. ...

  5. BZOJ1112: [POI2008]砖块Klo(洛谷P3466)

    平衡树 BZOJ题目传送门 洛谷题目传送门 动态维护中位数,平衡树上一发就好了. 代码: #include<cctype> #include<cstdio> #include& ...

  6. 浅尝无旋Treap (基于洛谷P3391 文艺平衡树)

    说是浅尝吧,确实也挺浅的,完全是基于下面这道题写的↓ 洛谷P3391 自己去看题,我是懒得粘了... 分析 其实也没有什么好分析的,这就是一道Splay树的模板题,解决一般的Treap不能解决的区间维 ...

  7. 洛谷 P1337 [JSOI2004]平衡点 / 吊打XXX

    具体题目见洛谷 P1337 [JSOI2004]平衡点 / 吊打XXX 方法一:模拟退火 思路:当绳子平衡时,系统的能量最小,则此时物体总的重力势能要最小,也就是物体重量一定的情况下绳长最长,即桌子上 ...

  8. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  9. 洛谷 P1142 轰炸

    洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...

最新文章

  1. 1202: [HNOI2005]狡猾的商人
  2. linux shell base64 加解密 编码字符串
  3. 1.9 实例:截取新闻标题
  4. python progressbar 多行_使用单击.progressbar在Python中使用多处理
  5. Virtual Machine Manager 2008 2008 R2系列之安装部署
  6. MySQL is running but PID file is not found
  7. clang编译c语言开o优化,针对gcc或clang的LTO可以跨C和C方法进行优化
  8. 无法在源表中获得一组稳定的行_行输出变压器的结构、符号及电路分析
  9. “Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported“解决方法
  10. 决策树——信息熵的学习笔记
  11. ES6 的解构赋值前每次都创建一个对象吗?会加重 GC 的负担吗?
  12. The request was rejected by the HTTP filter
  13. 【Java程序设计】Java基础类库简介
  14. 如何在Mac视频中添加表情符号
  15. 流水灯及注释c语言,流水灯 - 单片机教程 - C语言网
  16. web一键返回顶端html代码,CSS-返回顶部代码_html/css_WEB-ITnose
  17. Dosbox安装Windows 95图文教学
  18. web.xml.jsf_JSF 2.0 Ajax世界中的GMaps4JSF
  19. 微信支付--付款到零钱(java后端)
  20. 安科瑞无线测温装置,多点温度在线测温装置

热门文章

  1. (android 实战总结)android第三方组件实现总结
  2. 在GPU上运行,性能是NumPy的11倍,这个Python库你值得拥有
  3. Cortex-M3异常中断及向量表定义
  4. python怎么整体缩进_写python代码时怎么快速的给大量代码加上缩进?
  5. 这个开源组织里的项目都是精品
  6. 从生产故障解锁RocketMQ集群部署的最佳实践
  7. 天啦噜!知道硬盘很慢,但没想到比 CPU Cache 慢 10000000 倍
  8. 中台唯一的胜利果实:大数据中台架构详解
  9. 基于百度地图API的微信周边搜索
  10. MCMC方法与变分推断