POJ 3264
来源:互联网 发布:nginx 判断变量为空 编辑:程序博客网 时间:2024/06/07 02:30
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
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 ≤ A ≤ B ≤ N), representing the range of cows from A to B inclusive.
Output
Sample Input
6 31734251 54 62 2
Sample Output
630
Source
USACO 2007 January Silver
一.题意分析
给出一组数据,并且给出多组左右端点,求出区间内的最大值与最小值之差
二.思路过程
RMQ问题,ST表
三.代码
#include <iostream>#include <cstdio>#include <cmath>using namespace std;int num[200001], MAXN[200001][20], MINN[200001][20];int n, q;void init(){int i, j;int k = log(double(n))/log(2.0);for (j = 1; j <= k; j++){for (i = 1; i <= n+1-(1<<j); i++){MAXN[i][j] = max(MAXN[i][j-1], MAXN[i+(1<<(j-1))][j-1]);MINN[i][j] = min(MINN[i][j-1], MINN[i+(1<<(j-1))][j-1]);}}}int main(){int i, a, b;scanf("%d%d", &n, &q);for (i = 1; i <= n; i++){scanf("%d", &num[i]);MAXN[i][0] = MINN[i][0] = num[i];}init();for (i = 1; i <= q; i++){scanf("%d%d", &a, &b);if (a > b) swap(a, b);int k = log(double(b-a+1))/log(2.0);int ans = max(MAXN[a][k], MAXN[b-(1<<k)+1][k]) - min(MINN[a][k], MINN[b-(1<<k)+1][k]);printf("%d\n", ans);}return 0;}/*6 31734251 54 62 2*/
- poj 3264
- POJ 3264
- POJ 3264
- poj 3264
- POJ 3264
- poj 3264
- poj 3264
- poj 3264
- poj 3264
- POJ 3264
- poj 3264
- poj-3264
- poj 3264
- POJ-3264
- poj-3264
- POJ 3264
- POJ 3264
- poj 3264
- 5-13 统计工龄 (20分)
- Apache Tiles的基本使用
- #57 3Sum
- 5-14 电话聊天狂人 (25分)
- CentOS安装Oracle 12c实战
- POJ 3264
- 【Git/Github学习笔记】GitHub上README写法暨GFM语法解读
- 5-15 QQ帐户的申请与登陆 (25分)
- 【OVS2.5.0源码分析】openflow连接实现分析(3)
- Redis深入之路(十六)
- 5-16 一元多项式求导 (20分)
- #59 3Sum Closest
- CentOS7安装Oracle 12C
- 利用单片机自制简单的RS232信号发射装置