文章标题

来源:互联网 发布:彩虹无人机 知乎 编辑:程序博客网 时间:2024/06/06 04:02

题意:

用半径相等的两个圆覆盖一个w*h的矩形,要求两圆不相交且必须在矩形内。求覆盖面积最大时两圆半径。

思路:

直接用二分法,题目要求输出小数点后三位。ESP的应用。
#include<cstdio>#include<cmath>#include<algorithm>using namespace std;const double ESP=1e-8;int main (){    double a,b;    while(scanf("%lf%lf",&a,&b)!=EOF)    {        if(a<b)            swap(a,b);        double l,r,mid,dis;        l=0,r=b/2;        while(r-l>ESP){            mid=(r+l)/2;            dis=sqrt((a-2*mid)*(a-2*mid)+(b-2*mid)*(b-2*mid))/2.0;            if(dis>mid)                l=mid;            else r=mid;        }        printf("%.3f\n",l);    }    return 0;}
0 0
原创粉丝点击