HDU 1823 Luck and Love
2015-08-01 17:13
435 查看
Luck and Love
Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5828 Accepted Submission(s): 1449
[align=left]Problem Description[/align]
世界上上最远的距离不是相隔天涯海角
而是我在你面前
可你却不知道我爱你
―― 张小娴
前段日子,枫冰叶子给Wiskey做了个征婚启事,聘礼达到500万哦,天哪,可是天文数字了啊,不知多少MM蜂拥而至,顿时万人空巷,连扫地的大妈都来凑热闹来了。―_―|||
由于人数太多,Wiskey实在忙不过来,就把统计的事情全交给了枫冰叶子,自己跑回家休息去了。这可够枫冰叶子忙的了,他要处理的有两类事情,一是得接受MM的报名,二是要帮Wiskey查找符合要求的MM中缘分最高值。
[align=left]Input[/align]
本题有多个测试数据,第一个数字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)
所有输入的浮点数,均只有一位小数。
[align=left]Output[/align]
对于每一次询问操作,在一行里面输出缘分最高值,保留一位小数。
对查找不到的询问,输出-1。
[align=left]Sample Input[/align]
8
I 160 50.5 60.0
I 165 30.0 80.5
I 166 10.0 50.0
I 170 80.5 77.5
Q 150 166 10.0 60.0
Q 166 177 10.0 50.0
I 166 40.0 99.9
Q 166 177 10.0 50.0
0
[align=left]Sample Output[/align]
80.5
50.0
99.9
题解:二维线段树练习题。
总结一下写树套树的注意事项吧
1.一定区分好谁套谁,谁是x树谁是y树。
2.函数名、变量名一定一致,对于我就是所有的y树都加上_x后缀。
3.更新要更新到底,查询正常查询,这点我想了好久。。。
4.先写y树,然后往上套x树。
5.一定注意好内存指针神马的。。。树套树指针比较乱
5.宏看好了是哪个。。。
#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<queue> #include<cstring> #define PAU putchar(' ') #define ENT putchar('\n') #define CH for(int d=0;d<2;d++)if(ch[d]) #define lson x->ch[0],L,M #define rson x->ch[1],M+1,R #define lsonx x,y->ch[0],L,M #define rsonx x,y->ch[1],M+1,R using namespace std; const int maxn=200+10,maxnode=400+10,maxnode2=4000,inf=-1u>>1; struct nodex{ nodex*ch[2];double mx;int siz; void init(double a){mx=a;return;} void update(){ mx=-inf;CH{mx=max(ch[d]->mx,mx);}return; } }; struct node{ nodex segx[maxnode2],*nodecntx,*rootx;node*ch[2];int siz;node(){nodecntx=segx;} }seg[maxnode],*nodecnt=seg,*root; int n,m,pos,posx,qlx,qrx,ql,qr;double cv; void buildx(node*&x,nodex*&y,int L=0,int R=m){ y=x->nodecntx++;int M=L+R>>1;if(L==R)y->init(-inf); else buildx(lsonx),buildx(rsonx),y->update();y->siz=R-L+1;return; } void build(node*&x=root,int L=1,int R=n){ x=nodecnt++;buildx(x,x->rootx);int M=L+R>>1;if(L==R); else build(lson),build(rson);x->siz=R-L+1;return; } void updatex(node*&x,nodex*&y,int L=0,int R=m){ if(L==R)y->mx=max(y->mx,cv); else{int M=L+R>>1; if(posx<=M)updatex(lsonx);else updatex(rsonx);y->update(); }return; } void update(node*&x=root,int L=1,int R=n){ updatex(x,x->rootx);if(L==R); else{int M=L+R>>1; if(pos<=M)update(lson);else update(rson); }return; } double _mx; void queryx(node*&x,nodex*&y,int L=0,int R=m){ if(qlx<=L&&R<=qrx)_mx=max(_mx,y->mx); else{int M=L+R>>1; if(qlx<=M)queryx(lsonx);if(qrx>M)queryx(rsonx); }return; } void query(node*&x=root,int L=1,int R=n){ if(ql<=L&&R<=qr)queryx(x,x->rootx); else{int M=L+R>>1; if(ql<=M)query(lson);if(qr>M)query(rson); }return; } inline int read(){ int x=0,sig=1;char ch=getchar(); while(!isdigit(ch)){if(ch=='-')sig=-1;ch=getchar();} while(isdigit(ch))x=10*x+ch-'0',ch=getchar(); return x*=sig; } inline void write(int x){ if(x==0){putchar('0');return;}if(x<0)putchar('-'),x=-x; int len=0,buf[15];while(x)buf[len++]=x%10,x/=10; for(int i=len-1;i>=0;i--)putchar(buf[i]+'0');return; } void init(){ int Q; while(scanf("%d",&Q) && Q){ int i,j; m=1000;n=200; build(root,100,200); char str[3]; while(Q--){ scanf("%s",str); if(str[0]=='I'){ double x,y; int h; scanf("%d%lf%lf",&h,&x,&y); int xx=x*10; pos=h;posx=xx;cv=y; update(root,100,200); } else { int h1,h2; double x1,x2; int y1,y2; scanf("%d%d%lf%lf",&h1,&h2,&x1,&x2); y1=x1*10,y2=x2*10; if(h1>h2)swap(h1,h2); if(y1>y2)swap(y1,y2); ql=h1;qr=h2;qlx=y1;qrx=y2; _mx=-inf;query(root,100,200); if(_mx==-inf)printf("-1\n"); else printf("%.1lf\n",_mx); } }for(node*x=seg;x!=nodecnt;x++)x->nodecntx=x->segx;nodecnt=seg; } return; } void work(){ return; } void print(){ return; } int main(){init();work();print();return 0;}
相关文章推荐
- Redis Sentinel初体验
- Android核心基础-7.Android 网络通信-4.获取网络XML,JSON
- 字符串的比较
- zoj 1526 Big Number (N阶乘的位数)
- 51nod1189
- 动态库的动态链接(error while loading shared libraries,cannot open shared object file)
- SVM理解
- java多线程之 ---- 线程死锁
- opencv源码分析(一):imread、cvLoadImage、waitKey、imshow函数
- Leetcode|Find Minimum in Rotated Sorted Array[二分查找]
- C++之sstream格式流(常用于格式转换)
- Xcode7 beta 网络请求报错:The resource could not be loaded because the App Transport Security policy requir
- CSS基础-20CSS定位-浮动
- 几种常见的开源协议比较
- POI-----POI操作Excel-7、打印区域
- APPCan 深入解析 switchBtn
- 代码重构(转)
- 机器视觉开源代码集合
- [Effective Java]第十一章 序列化
- MyEclipse导入Maven项目报错 Plugin execution not covered by lifecycle configuration: