POJ 3264 Balanced Lineup (线段树)
Balanced Lineup
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
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
题意:问你[l r]区间最大值-最小值多少
记得写过 今天给学弟写 自己无聊 写了一遍
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<string.h>
#include<set>
#include<vector>
#include<queue>
#include<stack>
#include<map>
#include<cmath>
typedef long long ll;
typedef unsigned long long LL;
using namespace std;
const double PI=acos(-1.0);
const double eps=0.0000000001;
const int N=+;
const int INF=1e9;
int a[N];
struct node{
int l,r;
int maxx,minn;
int val;
}tree[N*];
void build(int left,int right,int pos){
tree[pos].l=left;
tree[pos].r=right;
tree[pos].val=tree[pos].maxx=;
tree[pos].minn=INF;
int mid=(tree[pos].l+tree[pos].r)>>;
if(tree[pos].l==tree[pos].r){
return ;
}
build(left,mid,pos<<);
build(mid+,right,pos<<|);
}
void update(int left,int right,int pos,int x,int y){
int mid=(left+right)>>;
if(tree[pos].l==x&&tree[pos].r==x){
tree[pos].val=y;
tree[pos].minn=y;
tree[pos].maxx=y;
return;
}
if(x>mid)update(mid+,right,pos<<|,x,y);
else
update(left,mid,pos<<,x,y);
tree[pos].maxx=max(tree[pos<<].maxx,tree[pos<<|].maxx);
tree[pos].minn=min(tree[pos<<].minn,tree[pos<<|].minn);
return ; }
int maxx;
int minn;
int query(int pos,int x,int y){
if(x==tree[pos].l&&tree[pos].r==y){
//cout<<4<<endl;
//cout<<tree[pos].maxx<<" "<<tree[pos].minn<<endl;
minn=min(minn,tree[pos].minn);
maxx=max(maxx,tree[pos].maxx);
return ;
}
int mid=(tree[pos].l+tree[pos].r)>>;
if(x>tree[pos].r||y<tree[pos].l)return ;
else if(x>mid)query(pos<<|,x,y);
else if(y<=mid)query(pos<<,x,y);
else{
query(pos<<|,mid+,y);
query(pos<<,x,mid);
}
return ;
}
int main(){
int n,q;
scanf("%d%d",&n,&q);
build(,n,);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
update(,n,,i,a[i]);
}
while(q--){
maxx=;
minn=INF;
//cout<<minn<<" "<<maxx<<endl;
int x,y;
scanf("%d%d",&x,&y);
query(,x,y);
cout<<maxx-minn<<endl;
}
}
POJ 3264 Balanced Lineup (线段树)的更多相关文章
- [POJ] 3264 Balanced Lineup [线段树]
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 34306 Accepted: 16137 ...
- poj 3264 Balanced Lineup(线段树、RMQ)
题目链接: http://poj.org/problem?id=3264 思路分析: 典型的区间统计问题,要求求出某段区间中的极值,可以使用线段树求解. 在线段树结点中存储区间中的最小值与最大值:查询 ...
- POJ 3264 Balanced Lineup 线段树RMQ
http://poj.org/problem?id=3264 题目大意: 给定N个数,还有Q个询问,求每个询问中给定的区间[a,b]中最大值和最小值之差. 思路: 依旧是线段树水题~ #include ...
- POJ 3264 Balanced Lineup 线段树 第三题
Balanced Lineup Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line ...
- POJ - 3264 Balanced Lineup 线段树解RMQ
这个题目是一个典型的RMQ问题,给定一个整数序列,1~N,然后进行Q次询问,每次给定两个整数A,B,(1<=A<=B<=N),求给定的范围内,最大和最小值之差. 解法一:这个是最初的 ...
- 【POJ】3264 Balanced Lineup ——线段树 区间最值
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 34140 Accepted: 16044 ...
- Poj 3264 Balanced Lineup RMQ模板
题目链接: Poj 3264 Balanced Lineup 题目描述: 给出一个n个数的序列,有q个查询,每次查询区间[l, r]内的最大值与最小值的绝对值. 解题思路: 很模板的RMQ模板题,在这 ...
- POJ 3264 Balanced Lineup【线段树区间查询求最大值和最小值】
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 53703 Accepted: 25237 ...
- POJ 3264 Balanced Lineup 【ST表 静态RMQ】
传送门:http://poj.org/problem?id=3264 Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total S ...
随机推荐
- ajax不跳转页面的快速删除操作,可添加美观样式
以前我们讲的删除是利用嵌入php代码,跳转到另一个页面,从而降低了删除速度,但我们今天讲的利用ajax不仅可以达到不跳页面快速删除,并且能添加特效来美化页面. 上代码,我们先来做主页面 <!DO ...
- suse 下的gcc安装
在付出了一天的努力之后终于在win7系统上面硬盘安装suse操作系统成功,可是随之而来的问题居然是没有安装GCC,这对我来说是一个不小的打击,因为很多工作和工具安装需要通过GCC来编译,因此我只好求助 ...
- CSS——行高
浏览器默认文字大小:16px 行高:是基线与基线之间的距离 行高=文字高度+上下边距 一行文字行高和父元素高度一致的时候,垂直居中显示. <!DOCTYPE html> <html& ...
- 15个最受欢迎的Python开源框架(转)
原文地址:http://blog.jobbole.com/72306/ Django: Python Web应用开发框架 Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受 ...
- (二)Python 学习第二天--爬5068动漫图库小案例
(注:代码和网站仅仅是学习用途,非营利行为,源代码参考网上大神代码,仅仅用来学习
- .mm c++ oc 混编
When you create a static library you don't link in the dependent libraries. As a result, when you re ...
- git 缓存密码导致的不能和远程仓库交互unable to access... 403错误
尝试了各种方式,包括卸载等最终解决方案: 查看本机的credential 是否已经被清空. 如果输入了 git config credential.helper 命令之后没有输出,说明 git 的配置 ...
- js 计算是今天多少周
/** * 判断年份是否为润年 * * @param {Number} year */ function isLeapYear(year) { return (year % 400 == 0) || ...
- UID中RUID、EUID和SUID的区别
看UNIX相关的书时经常能遇到这几个概念,但一直没有好好去理清这几个概念,以致对这几个概念一直一知半解.今天好好区分了一下这几个概念并总结如下.说白了这几个UID引出都是为了系统的权限管理. 下面分别 ...
- Boa服务器编译移植
Boa服务器移植 Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右.作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求.但Boa支 ...