你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市?
rt,
首先,肯定需要设置中途点,卸掉一部分煤,然后回去拉还没运过来的煤。
其次,从当前的中途点到下一个中途点要来回几趟? 假设两个中途点相距x公里,则如果只需要走一趟,则需要消耗煤x吨;如果需要拉两趟,则需要消耗煤3x吨;如果需要拉3趟,则需要消耗5x吨煤,以此类推。。。
最后,最关键的问题是要在这1000公里之间设置几个中途点?这几个中途点设置在哪里?
1. 因为有3000吨煤,而火车的运载量是1000,则从起点开始到第一个中途点,火车必须至少来回拉3趟煤才能将所有的煤都运到中途点。如果来回拉4趟以上则耗煤太多不合算,因此从起点到第一个中途点需要来回拉3趟煤。
2. 第一个中途点设在哪里? 由1可以推出第一个路段要来回拉3趟煤。因为拉的趟数越多,耗煤也就越多,因此必须需要当所有煤都拉到第一个中途点时,剩的煤最多,而且再往下走只需要来回2趟就能拉了。由此可以推断出到第一个中途点时剩煤2000是最合适的。因此可以得出第一个中途点的距离x = (3000-2000)/5 = 200 公里。
3. 类似的,可以推出第二个中途点距离第一个中途点的距离x = (2000-1000)/3 = 333.3 公里。该路段要来回拉2趟煤,最后到达第二个中途点时,剩煤1000吨。
4. 最后剩煤吨数该是x = 1000 - (1000 - 200 - 333.3) * 1 = 533.3。