POJ3264 Balanced Lineup (RMQ)
来源:互联网 发布:数据科学家养成手册 编辑:程序博客网 时间:2024/06/06 03:42
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 3
1
7
3
4
2
5
1 5
4 6
2 2
Sample Output
6
3
0
可以线段树,也可以RMQ
都是模版,练练。
F[i, j]表示从第i个数起连续2^j个数中的最大值
利用倍增的思想。
#include <iostream>#include <cmath>#include <cstdio>using namespace std;const int maxn = 200005;int MAX[maxn][20];int MIN[maxn][20];int n, q;//f[i, j]表示从第i个数起连续2^j个数中的最大值void init() { int i, j, lg = floor(log10(double(n))/log10(double(2))); for (j = 1; j <= lg; ++j) { //i + 2^(j-1) + 2^(j-1) - 1 <= n ==> i <= n + 1 - 2^j for (i = 1; i <= n+1-(1<<j); ++i) { //i ~ i + 2^(j-1) - 1, i + 2^(j-1) ~ i + 2^(j-1) + 2^(j-1) - 1 // ==> i ~ i + 2^j - 1 MAX[i][j] = max(MAX[i][j-1], MAX[i+(1<<(j-1))][j-1]); MIN[i][j] = min(MIN[i][j-1], MIN[i+(1<<(j-1))][j-1]); } }}int main() { int h, i, a, b, lg; scanf("%d%d", &n, &q); for (i = 1; i <= n; ++i) { scanf("%d", &h); MAX[i][0] = MIN[i][0] = h; } init(); for (i = 1; i <= q; ++i) { scanf("%d%d", &a, &b); if (a > b) swap(a, b); lg = floor(log10(double(b-a+1))/log10(double(2))); printf("%d\n", max(MAX[a][lg], MAX[b-(1<<lg)+1][lg])-min(MIN[a][lg], MIN[b-(1<<lg)+1][lg])); } return 0;}
- POJ3264-Balanced Lineup RMQ
- POJ3264 Balanced Lineup (RMQ)
- poj3264 Balanced Lineup(RMQ)
- poj3264 Balanced Lineup(RMQ +st)
- POJ3264 Balanced Lineup(RMQ)
- POJ3264 Balanced Lineup (RMQ & ST)
- poj3264--Balanced Lineup(RMQ求最大最小)
- POJ3264 Balanced Lineup RMQ 线段树
- RMQ经典题:【POJ3264】 Balanced Lineup
- POJ3264 Balanced Lineup 线段树||RMQ
- poj3264 Balanced Lineup(RMQ裸题)
- RMQ模板题 poj3264 Balanced Lineup
- POJ3264 Balanced Lineup 【RMQ问题的四种解法】
- POJ3264--点更新的线段树--RMQ--Balanced Lineup
- POJ3264 Balanced Lineup 线段树 RMQ ST算法应用
- POJ3264——Balanced Lineup 倍增RMQ裸题
- POJ3264 Balanced Lineup
- POJ3264:Balanced Lineup
- SCU 2113 数字游戏
- 【HD 4857】逃生(反向构图+拓扑排序+优先队列)
- Android Studio开发入门-引用jar及so文件
- 玲珑杯:ACM 热身赛 # 0.5 A题 Alarm(找规律)
- HDOJ 2087 剪花布条(KMP)
- POJ3264 Balanced Lineup (RMQ)
- js里面的||运算
- GitHub 排名前 100 的安卓、iOS项目简介
- 关于tomcat 中的 tomcat-users.xml 配置不生效原因
- Alarm
- iOS开发-automaticallyAdjustsScrollViewInsets属性
- Android瀑布流实例
- Maven学习笔记(2) --- 依赖
- Android——ListView布局+适配器(三)