ZJNU 1262

在影子没有到达墙角前,人越远离电灯,影子越长,所以这一部分无需考虑

所以只需要考虑墙上影子和地上影子同时存在的情况

因为在某一状态存在着最值

所以如果以影子总长与人的位置绘制y-x图像

会呈一个类似y=-x^2函数的图像

所以就可以根据三分法找出最值点

#include<stdio.h>
double H,h,D;
double len(double lh){
    return lh+D*(h-lh)/(H-lh);
}
int main(){
    int T;
    double l,r,m1,m2;
    scanf("%d",&T);
    while(T--){
        scanf("%lf%lf%lf",&H,&h,&D);
        l=0;r=h;
        while(r-l>=1e-5){
            m1=l+(r-l)/3.0;//三分左
            m2=l+(r-l)/1.5;//三分右
            if(len(m1)>len(m2))
                r=m2;
            else
                l=m1;
        }
        printf("%.3lf
",len(l));
    }
    
    return 0;
}
原文地址:https://www.cnblogs.com/stelayuri/p/12234830.html