LightOJ 1137 & Poj 1905 Expanding Rods

来源:互联网 发布:js 动态隐藏鼠标指针 编辑:程序博客网 时间:2024/04/28 23:10

题目链接 http://lightoj.com/volume_showproblem.php?problem=1137

                 http://poj.org/problem?id=1905

思路:二分,有两种方法,一种是二分角度,一种是二分h,速度没什么区别。

感觉LightOJ的精度要求要比Poj还要高些。

个人觉得这份解题报告写得很好,我就不重复了:

http://blog.csdn.net/lyy289065406/article/details/6648562

#include <stdio.h>#include <math.h>#define STD 1e-10       //1e-8会WA.........const double PI=acos(-1.0);double L,n,c,low,high,mid;double after,R;double Deal_alpha (){low=0;high=PI/2;while (high-low > STD){mid=(high+low)/2.0;if (L*mid-after*sin(mid) < 0)   //写成小于1e-15或者1e-10居然就WA,我就无语了............low=mid;elsehigh=mid;}R=after/(mid*2);return R*(1-cos(mid));}double Deal_H (){low=0;high=0.5*L;while (high-low > STD){mid=(low+high)/2.0;R=(4*mid*mid+L*L)/(8*mid);if (2*R*asin(L/(2*R)) < after)low=mid;elsehigh=mid;}return mid;}int main (){int T;scanf("%d",&T);for (int cas=1;cas<=T;cas++){scanf("%lf%lf%lf",&L,&n,&c);after=(1.0+n*c)*L;//printf("Case %d: %.8lf\n",cas,Deal_H());printf("Case %d: %.8lf\n",cas,Deal_alpha());}return 0;}


原创粉丝点击