灯泡

题意

求$L$最大值

asdfasdf

我们设人与灯低的距离为$x$,墙上的部分长$y$,用$x$表示出$L$和$y$,通过均值不等式求解最大值

#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int t;
double H,h,D;
double cal()
{
    double x=sqrt((H-h)*D);//均值不等式成立条件
    x=min(x,D);//x右边界
    x=max(x,(D*H-D*h)/H);//x左边界
    return D+H-x-(H-h)*D/x;
}
int main()
{
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lf%lf%lf",&H,&h,&D);
        printf("%.3lf\n",cal());
    }
    return 0;
}