bzoj1636: [Usaco2007 Jan]Balanced Lineup
2017-07-05 19:19
351 查看
线段树维护区间最大最小值。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int mi(int x,int y) { return x<y?x:y; } int ma(int x,int y) { return x>y?x:y; } int n,a[50005],tot=1; struct segtree { int ls; int rs; int maxx; int minn; }tree[100005]; void build(int p,int l,int r) { int mid=l+r>>1; if(l==r) { tree[p].minn=tree[p].maxx=a[mid]; return; } tree[p].ls=++tot; tree[p].rs=++tot; build(tree[p].ls,l,mid); build(tree[p].rs,mid+1,r); tree[p].minn=mi(tree[tree[p].ls].minn,tree[tree[p].rs].minn); tree[p].maxx=ma(tree[tree[p].ls].maxx,tree[tree[p].rs].maxx); } int qmax(int p,int x,int y,int l,int r) { int mid=l+r>>1; if(x==l&&r==y) return tree[p].maxx; if(y<=mid) return qmax(tree[p].ls,x,y,l,mid); if(x>mid) return qmax(tree[p].rs,x,y,mid+1,r); return ma(qmax(tree[p].ls,x,mid,l,mid),qmax(tree[p].rs,mid+1,y,mid+1,r)); } int qmin(int p,int x,int y,int l,int r) { int mid=l+r>>1; if(x==l&&r==y) return tree[p].minn; if(y<=mid) return qmin(tree[p].ls,x,y,l,mid); if(x>mid) return qmin(tree[p].rs,x,y,mid+1,r); return mi(qmin(tree[p].ls,x,mid,l,mid),qmin(tree[p].rs,mid+1,y,mid+1,r)); } int main() { int T,x,y; scanf("%d%d",&n,&T); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } build(1,1,n); while(T--) { scanf("%d%d",&x,&y); printf("%d\n",qmax(1,x,y,1,n)-qmin(1,x,y,1,n)); } }
相关文章推荐
- BZOJ 1699 & 1636 POJ 3264: [Usaco2007 Jan]Balanced Lineup排队 ST算法简介
- [BZOJ] 1636: [Usaco2007 Jan]Balanced Lineup
- bzoj1636: [Usaco2007 Jan]Balanced Lineup ——by lethalboy
- BZOJ 1636: [Usaco2007 Jan]Balanced Lineup
- BZOJ 1636: [Usaco2007 Jan]Balanced Lineup
- 【BZOJ】1636: [Usaco2007 Jan]Balanced Lineup(rmq+树状数组)
- bzoj 1636: [Usaco2007 Jan]Balanced Lineup -- 线段树
- BZOJ 1636: [Usaco2007 Jan]Balanced Lineup
- bzoj 1636 && bzoj 1699: [Usaco2007 Jan]Balanced Lineup排队(RMQ)
- 【bzoj1636】[Usaco2007 Jan]Balanced Lineup
- BZOJ1636: [Usaco2007 Jan]Balanced Lineup
- BZOJ 1699 [Usaco2007 Jan]Balanced Lineup排队 线段树
- 【bzoj1699】[Usaco2007 Jan]Balanced Lineup排队
- BZOJ 1636: [Usaco2007 Jan]Balanced Lineup
- bzoj 1699: [Usaco2007 Jan]Balanced Lineup排队 分块
- 【BZOJ】1699: [Usaco2007 Jan]Balanced Lineup排队(rmq/树状数组)
- BZOJ 1699: [Usaco2007 Jan]Balanced Lineup排队
- 1636/1699: [Usaco2007 Jan]Balanced Lineup排队
- 【bzoj1699】[Usaco2007 Jan][Balanced Lineup排队]
- BZOJ 1699 [USACO2007 Jan] Balanced Lineup排队