ZJNU 1262 - 电灯泡——中高级

Posted stelayuri

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZJNU 1262 - 电灯泡——中高级相关的知识,希望对你有一定的参考价值。

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

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

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

所以如果以影子总长与人的位置绘制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
",len(l));
25     }
26     
27     return 0;
28 }

 

以上是关于ZJNU 1262 - 电灯泡——中高级的主要内容,如果未能解决你的问题,请参考以下文章

ZJNU 1333 - 第二题 blocks--中高级

ZJNU 1367 - Party--中高级

ZJNU 1535 - 新建的大楼--中高级

ZJNU 1528 - War--高级

ZJNU 1542 - 三角形(续)--中高级

ZJNU 1244 - 森哥数——高级