Balanced Lineup
Time Limit: 5000MS   Memory Limit: 65536K
Total Submissions: 24349   Accepted: 11348
Case Time Limit: 2000MS

Description

For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer John decides to organize a game of Ultimate Frisbee with some of the cows. To keep things simple, he will take a contiguous range of cows from the milking lineup to play the game. However, for all the cows to have fun they should not differ too much in height.

Farmer John has made a list of Q (1 ≤ Q ≤ 200,000) potential groups of cows and their heights (1 ≤ height ≤ 1,000,000). For each group, he wants your help to determine the difference in height between the shortest and the tallest cow in the group.

Input

Line 1: Two space-separated integers, N and Q.
Lines 2..N+1: Line i+1 contains a single integer that is the height of cow i
Lines N+2..N+Q+1: Two integers A and B (1 ≤ ABN), representing the range of cows from A to B inclusive.

Output

Lines 1..Q: Each line contains a single integer that is a response to a reply and indicates the difference in height between the tallest and shortest cow in the range.

Sample Input

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

Sample Output

6
3
0

Source

USACO 2007 January Silver
#include<stdio.h>
#include<iostream>
#include<math.h>
#include<string.h>
using namespace std;
const int MAXN=50050;int dpmax[MAXN][20];
int dpmin[MAXN][20];void makeMaxRmq(int n,int b[])
{for(int i=0;i<n;i++)dpmax[i][0]=b[i];for(int j=1;(1<<j)<=n;j++)for(int i=0;i+(1<<j)-1<n;i++)dpmax[i][j]=max(dpmax[i][j-1],dpmax[i+(1<<(j-1))][j-1]);
}
int getMax(int u,int v)
{int k=(int)(log(v-u+1.0)/log(2.0));return max(dpmax[u][k],dpmax[v-(1<<k)+1][k]);
}
void makeMinRmq(int n,int b[])
{for(int i=0;i<n;i++)dpmin[i][0]=b[i];for(int j=1;(1<<j)<=n;j++)for(int i=0;i+(1<<j)-1<n;i++)dpmin[i][j]=min(dpmin[i][j-1],dpmin[i+(1<<(j-1))][j-1]);
}
int getMin(int u,int v)
{int k=(int)(log(v-u+1.0)/log(2.0));return min(dpmin[u][k],dpmin[v-(1<<k)+1][k]);
}int a[MAXN];
int main()
{int n,Q;int u,v;while(scanf("%d%d",&n,&Q)!=EOF){for(int i=0;i<n;i++)scanf("%d",&a[i]);makeMaxRmq(n,a);makeMinRmq(n,a);while(Q--){scanf("%d%d",&u,&v);u--;v--;int t1=getMax(u,v);int t2=getMin(u,v);printf("%d\n",t1-t2);}}return 0;
}

POJ 3264 Balanced Lineup(RMQ)相关推荐

  1. poj 3264 Balanced Lineup RMQ问题 线段树

    For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One d ...

  2. POJ 3264 Balanced Lineup (RMQ)

    Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same ...

  3. POJ 3264 Balanced Lineup

    POJ 3264 Balanced Lineup 题目链接 Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,00 ...

  4. POJ 3264 Balanced Lineup【线段树区间查询求最大值和最小值】

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 53703   Accepted: 25237 ...

  5. POJ 3264 Balanced Lineup

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 53629   Accepted: 25223 ...

  6. POJ 3264 Balanced Lineup 【线段树】

    Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 50004 Accepted: 23434 Cas ...

  7. 【RMQ】POJ 3264 Balanced Lineup

    前言 这题出现在RMQRMQRMQ的WordWordWord文档中,我就直接把以前ACACAC过的程序交上去,结果WAWAWA了,然后才发现这道题还要求最小值... 链接 http://poj.org ...

  8. POJ 3264: Balanced Lineup

    2019独角兽企业重金招聘Python工程师标准>>> 题目在此 解题思路:查询区间最大值/最小值之差,最基础的线段树应用. 代码: #include <cstdio>/ ...

  9. poj Balanced Lineup RMQ

    Balanced Lineup Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line ...

最新文章

  1. CUDA Samples: approximate prior vbox layer
  2. MATLAB安装相机驱动
  3. Jenkins系统上的时间不正确问题
  4. 96. (GO)不同的二叉搜索树
  5. Shell的sort、uniq、tr、cut、命令和 正则表达式
  6. JAVAEE框架之SpringMVC基础
  7. JDK1.6历史版本的下载
  8. java高并发临时表_不适用临时表进行分页,筛选,查询,避免高并发的方法。...
  9. 多个java文件编译并打成jar包经典方法
  10. SQL Server中的报表–结合T-SQL和DAX查询以生成有效的报表
  11. @程序员,你的 996,可能是给公司无能的管理背锅
  12. pagerank数据集_机器学习十大经典算法-PageRank(附实践代码)
  13. Spring中整合Quartz插件【一】基于MethodInvokingJobDetailFactoryBean实现任务管理
  14. (七)线程的优先级Priority和关键词:synchronized
  15. 企业级客户端病毒清除工具 Damage Cleanup Service
  16. java代码从初始化到具象执行
  17. 亲测有效:解决inkscape转换的svg图标,上传到阿里图标库不显示问题
  18. html数据线如何使用,揭秘数据线DIY详细步骤
  19. 图片加载失败替代文字_替代艺术:为图像编写出色的描述性文字
  20. 详解如何使用代码进行音频合成

热门文章

  1. Install OpenStack Kilo Dashboard wiht Nginx + uWSGI On RHEL7.1
  2. 修复 XE7 , XE8 Frame 内 PopupMenu 快捷键失效问题
  3. Linux 复习重点目录
  4. ScrollView中使用ListView
  5. 镭波笔记本安装linux,镭波笔记本windows7旗舰版系统下载与安装教程
  6. matlab colorbar采用对数,matlab colorbar的使用 | 學步園
  7. docker删除本地已下载的镜像
  8. 10个超级好用的快捷键技巧,知道的都是大神!
  9. 程序员需要了解的十个高级SQL概念
  10. 前大灯是近光灯还是远光灯_汽修案例:长安福特翼博前大灯间歇自动点亮