问题:我们希望乘坐卡车从一个地方到达另一个地方,即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。
我如何克服这些问题?