poj 3264
来源:互联网 发布:在linux部署测试环境 编辑:程序博客网 时间:2024/06/07 17:11
Balanced Lineup
Time Limit: 5000MS
Memory Limit: 65536K
Total Submissions: 44506
Accepted: 20902
Case Time Limit: 2000MS
Description
For the dailymilking, Farmer John's N cows (1 ≤ N ≤ 50,000)always line up in the same order. One day Farmer John decides to organize agame of Ultimate Frisbee with some of the cows. To keep things simple, he willtake a contiguous(连续的) range of cows from the milking lineup(阵容) to play the game. However, for all the cowsto have fun they should not differ too much in height.
Farmer John has madea 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 todetermine the difference in height between the shortest and the tallest cow inthe group.
Input
Line 1:Two space-separated integers(整数), N and Q.
Lines 2..N+1: Line i+1contains 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
Lines 1..Q:Each line contains a single integer(整数) that is a response to a reply and indicates(表明) the difference in height between the tallestand shortest cow in the range.
SampleInput
6 3
1
7
3
4
2
5
1 5
4 6
2 2
SampleOutput
6
3
0
Source
USACO2007 January Silver
线段树解法
Problem: 3264
User: ksq2013
Memory: 1692K
Time: 3891MS
Language: G++
Result: Accepted
#include<cstdio>#include<cstdlib>#include<iostream>using namespace std;int n,q,_max[200001],_min[200001];void update(int s,int t,int k,int add,int p){if(!(s^t)){_max[k]=_min[k]=p;return;}int m=(s+t)>>1;if(add<=m)update(s,m,k<<1,add,p);else update(m+1,t,k<<1|1,add,p);_max[k]=max(_max[k<<1],_max[k<<1|1]);_min[k]=min(_min[k<<1],_min[k<<1|1]);}int query1(int s,int t,int k,int l,int r){if(l<=s&&t<=r)return _max[k];int m=(s+t)>>1,res1=0,res2=0;if(l<=m)res1=query1(s,m,k<<1,l,r);if(m<r)res2=query1(m+1,t,k<<1|1,l,r);return max(res1,res2);}int query2(int s,int t,int k,int l,int r){if(l<=s&&t<=r)return _min[k];int m=(s+t)>>1,res1=0x7fffffff,res2=0x7fffffff;if(l<=m)res1=query2(s,m,k<<1,l,r);if(m<r)res2=query2(m+1,t,k<<1|1,l,r);return min(res1,res2);}int main(){scanf("%d%d",&n,&q);for(int i=1;i<=n;i++){int x;scanf("%d",&x);update(1,n,1,i,x);}for(int i=1;i<=q;i++){int a,b;scanf("%d%d",&a,&b);printf("%d\n",query1(1,n,1,a,b)-query2(1,n,1,a,b));}return 0;}
- 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
- android GPS 定位
- Socket通信机制(学习总结)
- CSS颜色混合模式特效
- 利用medusa破解linux ssh密码
- Eclipse 项目XXXX cannot be resolved问题
- poj 3264
- c:forEach 两列显示图片
- Android控件之SeekBar 设置最小值非零
- ecpilse中properties文件中文乱码问题,ASCII码
- 树莓派启动浏览器
- php学习笔记一
- jquery Ajax响应前和完成事件
- 【linux】linux tomcat服务器跑项目
- 局域网内mysql连接慢的解决办法