如何找到从一个地方到另一个地方所需的最低成本燃料

时间:2013-09-08 04:36:40

标签: algorithm dynamic-programming minimize

问题:我们希望乘坐卡车从一个地方到达另一个地方,即D(D <= 1,000,000,000)个单位。卡车可以容纳G(G <1,000,000)单位的燃料,并且消耗1单位的燃料1单位距离。沿途有N(N <= 50,000)个加油站。每个站i距离起点X_i单位并且每单位燃料的价格是Y_i(Y_i <= 1,000,000)。我们用B单位的燃料开始旅程。到达目的地的最低费用是多少?

(来自USACO过去的比赛的Actual problem statement

我的算法:
设F [i] =到达加油站i和第N + 1个加油站所需的最低成本是目的地。
假设k是我们在到达i之前填充坦克的最后一站,F[i] = F[k] + Y_k * (X_i-X_k)。我们为所有k&lt;我,X_i-X_k < D并取最小值。
F [N + 1]将是最终答案。

该算法存在的问题:
1. O(N 2 )时间不会在2秒的时间内运行。
2.它考虑的情况是我们到达一个已经有m单位燃料的燃料站k,我们只填充X_i-X_k-m单位的燃料到达i。

我如何克服这些问题?

1 个答案:

答案 0 :(得分:1)

比赛已针对所有9个问题发布了官方解决方案:

http://www.usaco.org/index.php?page=open13problems