二分与三分

 

二分与三分

  (写的很早忘了发布了...)今天高二的学长学姐们进行了二分和三分的测试(又名一本通课后题测试),感觉这个好有意思~

  关于什么是二分,三分,先咕咕咕了,来看一道题。

  灯泡:https://loj.ac/problem/10016

  

  题意概述:给出$H,h,D$,求阴影的最长长度(包括地上的和墙上的)。

  有种初中数学的既视感。

  解:设灯泡为$A$,人头为$B$,连接$AB$并延长,与地面的延长线交于点$C$.

  

  

  

  于是就结束了...吗?

  还有一种可能就是影子并没有到墙上去,但是影响不大,两个函数叠加起来还是单峰的,似乎就是那种对勾函数? 

  
 1 # include <cstdio>
 2 # include <iostream>
 3 
 4 using namespace std;
 5 
 6 int T;
 7 double H,h,d,a1,a2;
 8 double ans,l,r,lmid,rmid;
 9 
10 double f (double x)
11 {
12     double ans=0,a,b;
13     b=h*(d-x)/(H-h);
14     if(b<=x)
15         return b;
16     ans+=x;
17     a=(x*H-d*h)/(h-H);
18     ans+=a*h/(x+a);
19     return ans;
20 }
21 
22 int main()
23 {
24     scanf("%d",&T);
25     while (T--)
26     {
27         scanf("%lf%lf%lf",&H,&h,&d);
28         l=0,r=d,ans=0;
29         while (r-l>=0.0001)
30         {
31             lmid=l+(r-l)/3.0;
32             rmid=r-(r-l)/3.0;
33             a1=f(lmid);
34             a2=f(rmid);
35             if(f(lmid)<f(rmid))
36                 l=lmid;
37             else 
38                 r=rmid;
39         }
40         printf("%.3lf\n",f(l));
41     }
42     return 0;
43 }
灯泡

---shzr

猜你喜欢

转载自www.cnblogs.com/shzr/p/9630662.html
今日推荐