题意:
用半径相等的两个圆覆盖一个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;
}