火车运煤问题

      XX公司的一道笔试题,煤矿有3000吨煤要拿到市场上卖,有一辆火车可以用来运煤,火车最多能装1000吨煤,且火车本身需要烧煤做动力,每走1公里消耗1吨煤,如何运煤才能使得运到市场的煤最多,最多是多少?

最优解:

1,火车从煤矿出发3次,也即回来2次。(这样可以把3000吨都运出,回煤矿次数越多越费煤,所以最少需要回2次)

2,火车每次回煤矿要是空车。(如果不是空车,回煤矿两次显然不可能把所有煤运出去)

3,由于回煤矿两次,所以在中途有两个停车点,剩余的煤卸在停车点。

因此,最近的卸煤点设为x(与煤矿的距离),远处的卸煤点设为y(与x的距离),则1000 – 2x = 3x。2x是第一次卸煤时从煤矿往返消耗煤量,3x是第二次卸煤(在远处的卸煤点y)时从煤矿往返到x消耗煤量+最后一次运煤时途经x消耗煤量。这样解得x = 200

第一个1000吨煤供中途跑路用。

由于每次从煤矿出路过x时,煤量补满;每次回煤矿路过x时煤刚好用完,然后补够x。这样相当于第二个卸煤点的煤是从x点满载运出来的1000吨剩余的煤量,1000 – 2y = y。y是从第一个卸煤点到第二个卸煤点间的距离。这样解得y = 333.33

于是x卸煤点距煤矿200公里,y卸煤点距煤矿333.33 + 200 = 533.33公里。

第二个1000吨煤也供中途跑路用。

这样最后一次运煤,途经x时,把x的煤全部用完,然后火车满载;途经y时,把y的煤全部用完,然后火车满载。于是,在y点时,火车满载1000吨煤,距离终点1000 - 533.33公里,路上消耗1000 - 533.33吨煤,剩余1000 – (1000 – 533.33) = 533.33吨煤。

原文地址:https://www.cnblogs.com/codingmylife/p/2712249.html