poj 3264 Balanced Lineup (线段树模板题)
2015-08-16 21:48
405 查看
Balanced Lineup
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 ≤
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 tallest and shortest cow in the range.
Sample Input
Sample Output
Time Limit: 5000MS | Memory Limit: 65536K | |
Total Submissions: 40175 | Accepted: 18865 | |
Case Time Limit: 2000MS |
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 ≤
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 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 我的第一道线段树的题目,这道题也用RMQ解过,here 照着下面的代码学习了一下,原链接 点击打开链接/* POJ 3264 Balanced Lineup 题目意思:给定Q(1<=Q<=200000)个数A1,A2,```,AQ, 多次求任一区间Ai-Aj中最大数和最小数的差 */ #include<stdio.h> #include<algorithm> #include<iostream> using namespace std; #define MAXN 200005 #define INF 10000000 int nMax,nMin;//记录最大最小值 struct Node { int l,r;//区间的左右端点 int nMin,nMax;//区间的最小值和最大值 }segTree[MAXN*3]; int a[MAXN]; void Build(int i,int l,int r)//在结点i上建立区间为(l,r) { segTree[i].l=l; segTree[i].r=r; if(l==r)//叶子结点 { segTree[i].nMin=segTree[i].nMax=a[l]; return; } int mid=(l+r)>>1; Build(i<<1,l,mid); Build(i<<1|1,mid+1,r); segTree[i].nMin=min(segTree[i<<1].nMin,segTree[i<<1|1].nMin); segTree[i].nMax=max(segTree[i<<1].nMax,segTree[i<<1|1].nMax); } void Query(int i,int l,int r)//查询结点i上l-r的最大值和最小值 { if(segTree[i].nMax<=nMax&&segTree[i].nMin>=nMin) return; if(segTree[i].l==l&&segTree[i].r==r) { nMax=max(segTree[i].nMax,nMax); nMin=min(segTree[i].nMin,nMin); return; } int mid=(segTree[i].l+segTree[i].r)>>1; if(r<=mid) Query(i<<1,l,r); else if(l>mid) Query(i<<1|1,l,r); else { Query(i<<1,l,mid); Query(i<<1|1,mid+1,r); } } int main() { int n,q; int l,r; int i; while(scanf("%d%d",&n,&q)!=EOF) { for(i=1;i<=n;i++) scanf("%d",&a[i]); Build(1,1,n); for(i=1;i<=q;i++) { scanf("%d%d",&l,&r); nMax=-INF;nMin=INF; Query(1,l,r); printf("%d\n",nMax-nMin); } } return 0; }
相关文章推荐
- IOS-笔记3(Optional,Dictionary,Range等)
- Tree - POJ 3237 树链刨分
- Matlab与C混编的介绍
- Win10 把控制面板放到开始菜单-自定义开始菜单
- Javaweb的web.xml中<url-pattern>配置
- hdu 4975 最大流问题解决队伍和矩阵,利用矩阵dp优化
- Python中类的属性的访问控制
- Discuz随机默认头像
- Android实用代码七段(五)
- 关于 tomcat 集群中 session 共享的三种方法
- SVN系列学习(三)-TortoiseSVN的基本操作
- HW—可怕的阶乘n!__注意大数据函数的使用BigInteger
- 再读《C和指针》(笔记)
- C++1001
- Theano(2) Algebra
- 3.3 typedef__第3章 数据 《C和指针》
- 【Android】自定义圆形ImageView(圆形头像 可指定大小)
- 【POJ 3241】曼哈顿最小生成树(模板整理)
- 光场相机 标定微透镜阵列
- 新技术成长型企业往往经过四个发展阶段