您的位置:首页
BZOJ 1699 [Usaco2007 Jan]Balanced Lineup排队 线段树
2017-07-30 12:08
471 查看
题意:链接
方法:线段树
解析:
题意即题解。
多次询问区间最大值与最小值的差。显然直接上线段树或者rmq维护区间最值就可以。
代码:
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define N 50010 #define lson l,mid,rt<<1 #define rson mid+1,r,rt<<1|1 #define pa pair<int,int> using namespace std; int n,q; int ma[N<<2],mi[N<<2],dis[N<<2]; void init() { memset(ma,-1,sizeof(ma)); memset(mi,0x3f,sizeof(mi)); } void pushup(int rt) { ma[rt]=max(ma[rt<<1],ma[rt<<1|1]); mi[rt]=min(mi[rt<<1],mi[rt<<1|1]); } void build(int l,int r,int rt) { if(l==r) { int x; scanf("%d",&x); ma[rt]=mi[rt]=x; return; } int mid=(l+r)>>1; build(lson),build(rson); pushup(rt); } pa query(int L,int R,int l,int r,int rt) { pa ret; ret.first=-1,ret.second=0x3f3f3f3f; if(L<=l&&r<=R) { pa p; p.first=ma[rt],p.second=mi[rt]; return p; } int mid=(l+r)>>1; if(L<=mid) { pa tmp=query(L,R,lson); ret.first=max(ret.first,tmp.first),ret.second=min(ret.second,tmp.second); } if(R>mid) { pa tmp=query(L,R,rson); ret.first=max(ret.first,tmp.first),ret.second=min(ret.second,tmp.second); } return ret; } int main() { init(); scanf("%d%d",&n,&q); build(1,n,1); for(int i=1;i<=q;i++) { int x,y; scanf("%d%d",&x,&y); pa tmp=query(x,y,1,n,1); printf("%d\n",tmp.first-tmp.second); } }
相关文章推荐
- bzoj 1699: [Usaco2007 Jan]Balanced Lineup排队【st表||线段树】
- BZOJ 1699 [Usaco2007 Jan]Balanced Lineup排队 线段树
- 【bzoj1699】[Usaco2007 Jan][Balanced Lineup排队]
- 【BZOJ】1699: [Usaco2007 Jan]Balanced Lineup排队(rmq/树状数组)
- BZOJ 1699: [Usaco2007 Jan]Balanced Lineup排队
- BZOJ 1699: [Usaco2007 Jan]Balanced Lineup排队( RMQ )
- bzoj:1699;poj 3264: [Usaco2007 Jan]Balanced Lineup排队
- BZOJ 1699 [USACO2007 Jan] Balanced Lineup排队
- BZOJ1699: [Usaco2007 Jan]Balanced Lineup排队
- bzoj 1636 && bzoj 1699: [Usaco2007 Jan]Balanced Lineup排队(RMQ)
- BZOJ 1699 & 1636 POJ 3264: [Usaco2007 Jan]Balanced Lineup排队 ST算法简介
- bzoj 1699: [Usaco2007 Jan]Balanced Lineup排队 分块
- 【bzoj1699】[Usaco2007 Jan]Balanced Lineup排队
- 【bzoj 1699】[Usaco2007 Jan]Balanced Lineup排队
- bzoj1699 [Usaco2007 Jan]Balanced Lineup排队
- 【BZOJ】1699 [Usaco2007 Jan]Balanced Lineup排队 ST表
- bzoj1636&bzoj1699【Usaco2007 Jan】Balanced Lineup
- 1636/1699: [Usaco2007 Jan]Balanced Lineup排队
- bzoj 1636: [Usaco2007 Jan]Balanced Lineup -- 线段树
- [BZOJ1699][Usaco2007 Jan]Balanced Lineup排队