在影子没有到达墙角前,人越远离电灯,影子越长,所以这一部分无需考虑
所以只需要考虑墙上影子和地上影子同时存在的情况
因为在某一状态存在着最值
所以如果以影子总长与人的位置绘制y-x图像
会呈一个类似y=-x^2函数的图像
所以就可以根据三分法找出最值点
1 /* 2 Written By StelaYuri 3 */ 4 #include<stdio.h> 5 double H,h,D; 6 double len(double lh){ 7 return lh+D*(h-lh)/(H-lh); 8 } 9 int main(){ 10 int T; 11 double l,r,m1,m2; 12 scanf("%d",&T); 13 while(T--){ 14 scanf("%lf%lf%lf",&H,&h,&D); 15 l=0;r=h; 16 while(r-l>=1e-5){ 17 m1=l+(r-l)/3.0;//三分左 18 m2=l+(r-l)/1.5;//三分右 19 if(len(m1)>len(m2)) 20 r=m2; 21 else 22 l=m1; 23 } 24 printf("%.3lf\n",len(l)); 25 } 26 27 return 0; 28 }
原文地址:https://www.cnblogs.com/stelayuri/p/12234830.html
时间: 2024-10-11 18:42:50