卡车能行驶到的最远距离 50 trucks with payload

来源:互联网 发布:一级office考试软件 编辑:程序博客网 时间:2024/06/10 18:24

题目: Given a fleet of 50 trucks, each with a full fuel tank and a range of 100 miles, how far can you deliver a payload? You can transfer the payload from truck to truck, and you can transfer fuel from truck to truck. Assume all the payload will fit in one truck.

条件:初始时,所有卡车在同一起跑线,全部满箱汽油。途中可以任意把一辆车的汽油倒给别的车。

思路:

    最极端的两个方法,一是一开始就放弃掉所有车,只有一辆车跑,就能跑100英里;另一个是一辆车也不愿意放弃,也只能跑100英里。注意车是费油的,越少越好;油是有用的,越省越好。所有卡车的出发点相同,车越多必然越费油,所以车是越早放弃越好,但绝对不能放弃油。所以,应该在放弃车的时候把它的油倒到别的车上来。

    那么,应该什么时候放弃车呢?起初的时候不放弃,是因为所有车上的油都很多,想倒进来都没地方存。所以,放弃一辆车的时机应该是该车上剩下的油能正好灌满其他所有车的油箱。

    什么时候放弃一辆车的时候,车上剩下的油能正好灌满其他所有的车呢?这是列一个方程可以求出来的。

    或者我换一个角度,假设所有发动机都只用某一辆车上的汽油,直到把这辆车的油用光,然后放弃它。

    这个假设看起来很不切实际,因为我需要时时刻刻连续地把某一个车上的油往其他所有车里倒,保证卡车行驶过程中其他的油箱始终是满的,直到该车的油箱空掉。但这实质上和刚才说的列方程的思路是一样的,只是一点点倒油和计算好之后一下子倒够的区别。


解法:

    依据上面说的,开始让所有50辆车都只用某一个车上的汽油,这一个车的汽油,够这50辆车同步行驶多远呢?很明显是100/50英里。然后,放弃掉这辆车,因为它空了,此时另外49辆车还是满油。下面让所有49辆车再只用某一个车上的汽油,很明显,能走100/49英里……依次类推,直到放弃掉49辆车之后,只能一辆车了,它还是满油的,能走100英里。

    因此,该问题解决了,卡车能行驶的最远距离是:

    100/50 + 100/49 + ... + 100/2 + 100/1 = 100(1+ 1/2 + 1/3 + ... + 1/49 + 1/50) 

后面是一个调和级数的前50项,最终结果约等于449.92英里。

0 0
原创粉丝点击