问题: 一辆载油 500升的汽车从A开往1000公里外的B,已知汽车每公里耗油量为1升,A处有无穷多的油,其他任何地点都没有油,但该车可以在任何地点存放油以备中转,问从A到B最少需要多少油?
乍一看,这道题目类似于小学奥数题,难度应该不大。但是仔细思考过后,发现其实不然。这个问题不仅难以构造最优解,而且无法使用计算机暴力破解(因为可能有无穷多种情况)。
接下来,我将给出构造过程及其完整证明(thanks to hzc,我修改了其中表意不明的部分)。
注:
最后一次行驶表示从A拿油出发直接到B的过程
Li可能表示第i个中转站,也可能表示最后一次行驶前第i个中转站中的油量
约束条件1:
油箱容量为0-500
说明到达每一个中转站L前后油箱容量都满足该条件。到达加油站前,原油量w1>=0,到达加油站后,油量w2>=w1且w2<=500且w2<=w1+Li(中转站i的总油量)
约束条件2:
中转站Li内汽油量>=0
推论1:
假设最后一次行驶后所有中转站内存储的汽油都被用尽,那么所需的油量等于总路径长度。
证明:
如果没有被用尽,说明之前加了比自己所需的更多的油,而这