hdu-1823-Luck and Love-(二维线段树)
来源:互联网 发布:刘备对诸葛亮说知我者 编辑:程序博客网 时间:2024/05/16 01:23
Problem Description
世界上上最远的距离不是相隔天涯海角
而是我在你面前
可你却不知道我爱你
―― 张小娴
前段日子,枫冰叶子给Wiskey做了个征婚启事,聘礼达到500万哦,天哪,可是天文数字了啊,不知多少MM蜂拥而至,顿时万人空巷,连扫地的大妈都来凑热闹来了。―_―|||
由于人数太多,Wiskey实在忙不过来,就把统计的事情全交给了枫冰叶子,自己跑回家休息去了。这可够枫冰叶子忙的了,他要处理的有两类事情,一是得接受MM的报名,二是要帮Wiskey查找符合要求的MM中缘分最高值。
而是我在你面前
可你却不知道我爱你
―― 张小娴
前段日子,枫冰叶子给Wiskey做了个征婚启事,聘礼达到500万哦,天哪,可是天文数字了啊,不知多少MM蜂拥而至,顿时万人空巷,连扫地的大妈都来凑热闹来了。―_―|||
由于人数太多,Wiskey实在忙不过来,就把统计的事情全交给了枫冰叶子,自己跑回家休息去了。这可够枫冰叶子忙的了,他要处理的有两类事情,一是得接受MM的报名,二是要帮Wiskey查找符合要求的MM中缘分最高值。
Input
本题有多个测试数据,第一个数字M,表示接下来有连续的M个操作,当M=0时处理中止。 接下来是一个操作符C。 当操作符为‘I’时,表示有一个MM报名,后面接着一个整数,H表示身高,两个浮点数,A表示活泼度,L表示缘分值。 (100<=H<=200, 0.0<=A,L<=100.0) 当操作符为‘Q’时,后面接着四个浮点数,H1,H2表示身高区间,A1,A2表示活泼度区间,输出符合身高和活泼度要求的MM中的缘分最高值。 (100<=H1,H2<=200, 0.0<=A1,A2<=100.0) 所有输入的浮点数,均只有一位小数。
Output
对于每一次询问操作,在一行里面输出缘分最高值,保留一位小数。 对查找不到的询问,输出-1。
Sample Input
8I 160 50.5 60.0I 165 30.0 80.5I 166 10.0 50.0I 170 80.5 77.5Q 150 166 10.0 60.0Q 166 177 10.0 50.0I 166 40.0 99.9Q 166 177 10.0 50.00
Sample Output
80.550.099.9
AC代码:
#include<iostream>#include<string>#include<cstdio>#include<algorithm>#include<cmath>#include<iomanip>#include<queue>#include<cstring>#include<map>using namespace std;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1int n;int H,A,hl,hr,al,ar;double a1,L,al1,ar1,ans;double tree[102<<2][1002<<2];void update1(int rrt,int l,int r,int rt){ if(l==r) { if(L>tree[rrt][rt]) tree[rrt][rt]=L; return ; } int m=(l+r)>>1; if(A<=m) update1(rrt,lson); else update1(rrt,rson); tree[rrt][rt]=max(tree[rrt][rt<<1],tree[rrt][rt<<1|1]);}void update2(int l,int r,int rt){ update1(rt,1,1000,1); if(l==r) { return ; } int m=(l+r)>>1; if(H<=m) update2(lson); else update2(rson);}void query1(int rrt,int l,int r,int rt){ if(al<=l&&ar>=r) { if(ans<tree[rrt][rt]) ans=tree[rrt][rt]; return; } int m=(l+r)>>1; if(al<=m) query1(rrt,lson); if(ar>m) query1(rrt,rson);}void query2(int l,int r,int rt){ if(hl<=l&&hr>=r) { query1(rt,1,1000,1); return; } int m=(l+r)>>1; if(hl<=m) query2(lson); if(hr>m) query2(rson);}int main(){ int i,j; int up1=102<<2; int up2=1002<<2; char ch; while(scanf("%d",&n)&&n) { for(i=0;i<up1;i++) //注意因为L值可以为0,所以不可以初始化为0,注意memset(tree,-1,sizeof(tree))起不到正确效果 for(j=0;j<up2;j++) { tree[i][j]=-1; } while(n--) { getchar(); ch=getchar(); if(ch=='I') { scanf("%d%lf%lf",&H,&a1,&L); H-=99; A=(int)(a1*10); update2(1,101,1); } else { scanf("%d%d%lf%lf",&hl,&hr,&al1,&ar1); if(hl>hr) swap(hl,hr); if(al1>ar1) swap(al1,ar1); hl-=99; hr-=99; al=(int)(al1*10); ar=(int)(ar1*10); ans=-1; query2(1,101,1); if(ans==-1) printf("-1\n"); else printf("%.1lf\n",ans); } } } return 0;}
阅读全文
0 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 二维线段树
- 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 二维线段树
- HDU 1832 Luck and Love (二维线段树)
- HDU 1832:Luck and Love(二维线段树)
- jq其他属性操作及jq事件机制
- 单链表逆置的图解
- 数据库多表查询____表连接,子查询
- python实现微信自动回复及接入聊天机器人等功能
- Codeforces Round #439 (Div. 2) The Eternal Immortality
- hdu-1823-Luck and Love-(二维线段树)
- Gym
- 万向节死锁问题
- 如何使希尔排序具有稳定性
- GC 垃圾回收机制
- 浅谈堆排序的堆调整及时间复杂度
- 在Eclipse中设置注释和注释模板
- 后缀表达式
- 设计模式之职责链模式