HDU 3400 Line belt 三分
2014-05-02 16:03
501 查看
点击打开链接
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2615 Accepted Submission(s): 990
Problem Description
In a two-dimensional plane there are two line belts, there are two segments AB and CD, lxhgww's speed on AB is P and on CD is Q, he can move with the speed R on other area on the plane.
How long must he take to travel from A to D?
Input
The first line is the case number T.
For each case, there are three lines.
The first line, four integers, the coordinates of A and B: Ax Ay Bx By.
The second line , four integers, the coordinates of C and D:Cx Cy Dx Dy.
The third line, three integers, P Q R.
0<= Ax,Ay,Bx,By,Cx,Cy,Dx,Dy<=1000
1<=P,Q,R<=10
Output
The minimum time to travel from A to D, round to two decimals.
Sample Input
1
0 0 0 100
100 0 100 100
2 2 1
Sample Output
136.60
Author
lxhgww&&momodi
在二维平面上,有两条线段分别是AB和CD,传送带在AB上的速度是p,在CD上的速度是q,在其余地方的速度是r,求传送带从A点到D点的最快时间是多少。
三分求解。
先三分AB这条线段,然后在此基础上在三分CD这条线段,最后即可求得最少时间。
Line belt
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2615 Accepted Submission(s): 990
Problem Description
In a two-dimensional plane there are two line belts, there are two segments AB and CD, lxhgww's speed on AB is P and on CD is Q, he can move with the speed R on other area on the plane.
How long must he take to travel from A to D?
Input
The first line is the case number T.
For each case, there are three lines.
The first line, four integers, the coordinates of A and B: Ax Ay Bx By.
The second line , four integers, the coordinates of C and D:Cx Cy Dx Dy.
The third line, three integers, P Q R.
0<= Ax,Ay,Bx,By,Cx,Cy,Dx,Dy<=1000
1<=P,Q,R<=10
Output
The minimum time to travel from A to D, round to two decimals.
Sample Input
1
0 0 0 100
100 0 100 100
2 2 1
Sample Output
136.60
Author
lxhgww&&momodi
在二维平面上,有两条线段分别是AB和CD,传送带在AB上的速度是p,在CD上的速度是q,在其余地方的速度是r,求传送带从A点到D点的最快时间是多少。
三分求解。
先三分AB这条线段,然后在此基础上在三分CD这条线段,最后即可求得最少时间。
//15MS 228K #include<stdio.h> #include<math.h> double p,q,rr; struct Point { double x,y; }; double dis(Point A,Point B) { return sqrt((B.x-A.x)*(B.x-A.x)+(B.y-A.y)*(B.y-A.y)); } double calc(Point x,Point C,Point D) { Point l=C,r=D,mid,midmid; double mid_area,midmid_area; do//三分CD的长度 { mid.x=(l.x+r.x)/2;mid.y=(l.y+r.y)/2; midmid.x=(mid.x+r.x)/2;midmid.y=(mid.y+r.y)/2; mid_area=dis(mid,D)/q+dis(x,mid)/rr; midmid_area=dis(midmid,D)/q+dis(x,midmid)/rr; if(mid_area>midmid_area)l=mid; else r=midmid; }while(dis(l,r)>=1e-9); return mid_area; } int main() { int t; scanf("%d",&t); while(t--) { Point A,B,C,D; scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&A.x,&A.y,&B.x,&B.y,&C.x,&C.y,&D.x,&D.y); scanf("%lf%lf%lf",&p,&q,&rr); Point l=A,r=B,mid,midmid; double mid_area,midmid_area; do//三分AB的长度 { mid.x=(r.x+l.x)/2;mid.y=(r.y+l.y)/2; midmid.x=(r.x+mid.x)/2;midmid.y=(r.y+mid.y)/2; mid_area=dis(A,mid)/p+calc(mid,C,D); midmid_area=dis(A,midmid)/p+calc(midmid,C,D); if(mid_area<midmid_area)r=midmid; else l=mid; }while(dis(l,r)>=1e-9); printf("%.2lf\n",mid_area); } return 0; }
相关文章推荐
- hdu 3400 Line belt【三分嵌套】
- HDU 3400 Line belt 嵌套三分搜索
- hdu 3400 Line belt(三分)
- Hdu 3400 Line belt (三分)
- HDU 3400 Line belt (三分嵌套)
- Line belt HDU - 3400 三分
- HDU 3400 Line belt (三分再三分)
- hdu 3400 Line belt 三分
- HDU 3400 Line belt (三分套三分)
- HDU 3400 Line belt (三分搜索)
- HDU 3400 Line belt(三分)
- HDU 3400 Line belt (三分套三分)
- hdu 3400 Line belt (三分套三分)
- HDU 3400 Line belt(嵌套三分)
- hdu 3400 Line belt(多重三分)
- hdu 3400 Line belt 双三分
- HDU 3400 Line belt(三分)
- HDU 3400 Line belt(二重三分枚举)
- hdu 3400 Line belt 三分
- HDU 3400 Line belt 三分