SSL JudgeOnline 1668——小车载人问题

Description

  甲、乙同时从A地出发要尽快到达B地。出发时A地有带一人的小车。可是这辆车除了驾驶员外只能带一个人。又知甲、乙两人步行速度相同。问怎样得用小车才能使两个尽快同时到达。

Input

仅一行,三个数据分别表示AB两地的距离s,人的速度,车的速度

Output

两人同时到达B点的最短时间(结果保留小数点后4位)。

Sample Input

120 5 25
Sample Output

9.6000
保留小数点后4位


最佳方案就是甲乘车到k处后下车步行,小车再回去接在c处的乙。然后甲乙一起到B地。

我们用二分的方法求k直达到达时间满足精度。


代码如下:

const z=1e-4;
var
  s,a,b,c,c0,c1,t1,t2,t3,t4:real;
begin
  readln(s,a,b);
  c0:=0;
  c1:=s;
  repeat
    c:=(c0+c1)/2;
    t3:=c/b;
    t2:=t3+(s-c)/a;
    t4:=(c-t3*a)/(a+b);
    t1:=t3+t4+(s-(t3+t4)*a)/b;
    if t1<t2 then c0:=c else c1:=c;
  until abs(t1-t2)<=0.0001;
  write(t1:0:4);
end.
原文地址:https://www.cnblogs.com/Comfortable/p/8412461.html