小车问题
题目描述
甲、乙两人同时从 A 地出发要尽快同时赶到 B 地。出发时 A 地有一辆小车,可是这辆小车除了驾驶员外只能带一人。已知甲、乙两人的步行速度一样,且小于车的速度。问:怎样利用小车才能使两人尽快同时到达。
输入格式
仅一行,三个实数,分别表示 AB 两地的距离 s,人的步行速度 a,车的速度 b。
输出格式
两人同时到达 B 地需要的最短时间,保留 6 位小数。
输入输出样例
输入 输出
120 5 25 9.600000
算法思路
第一眼看上去就是一道应用题。这题需要考虑的问题是:该怎样放人、载人才能到达B地且时间最少,后来我仔细想想,只用在某一个地方放人下去(就是说只用交换一次)。
现在的问题就变为了:该在哪个地方放人下去,带回终点,两人一起到终点,时间最少(首先车带一个人行驶一段距离然后丢下,折回找另外一个人,半路碰上,带回终点刚好与第一人共到B点)
这样问题就好解决了,设那个放下的点为x,那么就有:(s-x)/a=2*(2*x/(a+b)-x/b)+(s-x)/b
化简得:x=(b+a)*s/(b+3a);最短时间 t = x / b + (s - x) / a;
#include<