POJ3264_Balanced Lineup(线段树/单点更新)
来源:互联网 发布:ant design pro 知乎 编辑:程序博客网 时间:2024/05/21 22:38
解题报告
题意:
求区间内最大值和最小值的差值。
思路:
裸线段树,我的线段树第一发。区间最值。
#include <iostream>#include <cstring>#include <cstdio>#define inf 99999999#define LL long longusing namespace std;LL minn[201000],maxx[201000];void update(LL root,LL l,LL r,LL p,LL v){ if(l==r)minn[root]=v,maxx[root]=v; if(l<r) { LL mid=(l+r)/2; if(p<=mid)update(root*2,l,mid,p,v); else update(root*2+1,mid+1,r,p,v); minn[root]=min(minn[root*2],minn[root*2+1]); maxx[root]=max(maxx[root*2],maxx[root*2+1]); }}LL q_minn(LL root,LL l,LL r,LL ql,LL qr){ LL mid=(l+r)/2,ans=inf; if(ql<=l&&r<=qr)return minn[root]; if(ql<=mid)ans=min(ans,q_minn(root*2,l,mid,ql,qr)); if(qr>mid)ans=min(ans,q_minn(root*2+1,mid+1,r,ql,qr)); return ans;}LL q_maxx(int root ,int l,int r,int ql,int qr){ LL mid=(l+r)/2,ans=-inf; if(ql<=l&&r<=qr)return maxx[root]; if(ql<=mid)ans=max(ans,q_maxx(root*2,l,mid,ql,qr)); if(mid<qr)ans=max(ans,q_maxx(root*2+1,mid+1,r,ql,qr)); return ans;}int main(){ LL a,n,i,j,q,ql,qr; scanf("%lld%lld",&n,&q); for(i=1; i<=n; i++) { scanf("%lld",&a); update(1,1,n,i,a); } while(q--) { scanf("%lld%lld",&ql,&qr); printf("%lld\n",q_maxx(1,1,n,ql,qr)-q_minn(1,1,n,ql,qr)); } return 0;}
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
- POJ3264_Balanced Lineup(线段树/单点更新)
- POJ3264 Balanced Lineup 【线段树】+【单点更新】
- poj3264_Balanced Lineup_线段树
- POJ 3264 Balanced Lineup (线段树单点更新 区间查询)
- POJ 3264 Balanced Lineup 线段树 单点更新 求区间最值
- POJ 3264-Balanced Lineup(线段树:单点更新,区间查询)
- 线段树 单点更新
- 线段树单点更新
- 线段树 单点更新
- 单点更新线段树
- 线段树单点更新
- 线段树单点更新
- 线段树 单点更新
- 线段树 单点更新
- 线段树单点更新
- 线段树 单点更新
- 单点更新线段树
- 线段树单点更新
- PHP运算符介绍与使用
- ZOJ-1210
- 继承BaseHTTPRequestHandler 重写 do_XX 和HTTPServer的使用
- winform 五子棋 判断输赢
- hdu 1175 连连看(模拟循环队列)
- POJ3264_Balanced Lineup(线段树/单点更新)
- Python 字符串
- 6.2单链表
- 代理类
- C++ MFC连接mysql
- 黑马程序员_面向对象_继承多态
- 北大oj--1050
- 格式化时间
- 二分图匹配之匈牙利算法和 二分图匹配的几种题型