【HDU】1823 Luck and Love
2012-06-27 22:47
281 查看
#include<cstdio> #include<algorithm> using namespace std; #define MAXN 110 #define MAXM 1010 struct node { int big[MAXM<<2]; }; node tree[MAXN<<2]; inline int MAX(int x,int y) { return x>y?x:y; } void SubBuild(int t,int L,int R,int rt) { tree[t].big[rt]=-1; if(L!=R) { int mid=(L+R)>>1; SubBuild(t,L,mid,rt<<1); SubBuild(t,mid+1,R,rt<<1|1); } } void Build(int h1,int h2,int rt) { SubBuild(rt,0,1000,1); if(h1!=h2) { int mid=(h1+h2)>>1; Build(h1,mid,rt<<1); Build(mid+1,h2,rt<<1|1); } } void SubUpdate(int t,int x,int val,int L,int R,int rt) { if(L==R) tree[t].big[rt]=MAX(tree[t].big[rt],val); else { int mid=(L+R)>>1; if(x<=mid) SubUpdate(t,x,val,L,mid,rt<<1); else SubUpdate(t,x,val,mid+1,R,rt<<1|1); tree[t].big[rt]=MAX(tree[t].big[rt<<1],tree[t].big[rt<<1|1]); } } void Update(int x,int y,int val,int L,int R,int rt) { SubUpdate(rt,y,val,0,1000,1); if(L!=R) { int mid=(L+R)>>1; if(x<=mid) Update(x,y,val,L,mid,rt<<1); else Update(x,y,val,mid+1,R,rt<<1|1); } } int SubQuery(int t,int x,int y,int L,int R,int rt) { if(x<=L&&R<=y) return tree[t].big[rt]; int mid=(L+R)>>1,ans=-1; if(x<=mid) ans=MAX(ans,SubQuery(t,x,y,L,mid,rt<<1)); if(y>mid) ans=MAX(ans,SubQuery(t,x,y,mid+1,R,rt<<1|1)); return ans; } int Query(int h1,int h2,int a1,int a2,int L,int R,int rt) { if(h1<=L&&R<=h2) return SubQuery(rt,a1,a2,0,1000,1); int mid=(L+R)>>1,ans=-1; if(h1<=mid) ans=MAX(ans,Query(h1,h2,a1,a2,L,mid,rt<<1)); if(h2>mid) ans=MAX(ans,Query(h1,h2,a1,a2,mid+1,R,rt<<1|1)); return ans; } int main() { char ch; int q,h1,h2,ans; double a1,a2,val; while(scanf("%d",&q),q) { Build(100,200,1); while(q--) { scanf(" %c",&ch); if(ch=='I') { scanf("%d%lf%lf",&h1,&a1,&val); Update(h1,int(a1*10),int(val*10),100,200,1); } else { scanf("%d%d%lf%lf",&h1,&h2,&a1,&a2); if(h1>h2) swap(h1,h2); if(a1>a2) swap(a1,a2); ans=Query(h1,h2,(int)(a1*10),(int)(a2*10),100,200,1); if(ans<0) puts("-1"); else printf("%.1lf\n",ans/10.0); } } } return 0; }
相关文章推荐
- HDU 1823 Luck and Love 二维线段树
- hdu 1823 Luck and Love
- hdu 1823 Luck and Love
- HDU 1823 Luck and Love 【二维线段树】
- hdu 1823 Luck and Love
- HDU-1823 Luck and Love 二维线段树
- hdu 1823 Luck and Love (二维线段树)
- 线段树系列(二) HDU 1823 Luck and Love
- HDU1823 Luck and Love, 二维线段树
- HDU - 1823 Luck and Love(二维线段树、单点更新区间最值)
- hdu 1823 Luck and Love
- hdu -- 1823 Luck and Love(二维线段树)
- Hdu 1823 Luck and Love
- hdu 1823 Luck and Love
- HDU1823 Luck and Love(二维线段树单点更新+区间查询+模板)
- 树套树:二维线段树初步:hdu1823——Luck and Love(单点修改,区间查询)
- HDU-1823-Luck and Love-二维线段树入门
- hdu 1823 Luck and Love 【二维线段树】
- hdu 1823 Luck and Love(线段树)
- [二维线段树](数组实现) HDU 1823 Luck and Love