【Uva10566】Crossed Ladders
2016-07-27 10:59
399 查看
列出一个包含x,y,c的关系式,设宽为w,底边垂线左边为a,根据相似三角形关系:
1.a/w=c/sqrt(y*y-w*w);
2.(w-a)/w=c/sqrt(y*y-w*w);
两式合并消去a得:
c/sqrt(x*x-w*w)+c/sqrt(y*y-w*w)=1;
能推出c与w有同增同减关系,所以当带入mid小于1时,实际w大于mid;反之小于mid,以此二分,再注意精度即可(误差小于1e-6)。
#include<stdio.h> #include<math.h> double x,y,c; bool judge(double mid) { return c/sqrt(x*x-mid*mid)+c/sqrt(y*y-mid*mid)<1; } int main() { int T,id=0; scanf("%d",&T); while(T--) { scanf("%lf%lf%lf",&x,&y,&c); double t; t=x<y?x:y; double l=0,r=t; double mid; while(fabs(r-l)>5*1e-7) { mid=(l+r)/2; if(judge(mid)) l=mid; else r=mid; } printf("Case %d: %.7lf\n",++id,mid); } return 0; }
http://acm.hust.edu.cn/vjudge/contest/123973#problem/E
相关文章推荐
- PS制作对称的几何图案
- 总结一下最近做的计算几何学到的知识
- 快速排序里的学问:从猜数字开始
- HDU 4898 The Revenge of the Princess’ Knight ( 2014 Multi-University Training Contest 4 )
- csu1503 点到圆弧的距离
- Search Insert Position,Search for a Range,Pow(x, n),Sqrt(x)
- Find Minimum in Rotated Sorted Array II
- [LeetCode] Sqrt(x)
- [LeetCode] Pow(x, n)
- [LeetCode] Search Insert Position
- [LeetCode] Search for a Range
- [LeetCode] Search in Rotated Sorted Array
- PAT 1057 Stack (30)
- int sqrt(int x)
- Pow(x, n)
- Find Minimum in Rotated Sorted Array
- Divide Two Integers
- 信息竞赛学习笔记:POJ3579中位数(二分)
- acm解题报告 HDU 2141 Can you find it?
- acm解题报告 HDU 2199 Can you solve this equation?