我遇到了一个问题:
你必须穿过N街区,在一个城市里,开着一辆车,从0街区开始,到N - 1街区结束。每个街区的i都有一个加油站,从区块的西面到X[i]英里,再到街区以东的Y[i]英里。加油站只在支付初始金额C[i]时才为您服务。假设所有的街区都在一条直线上。给出一种算法,该算法选择加油站支付,使支付给加油站的现金最小化,并且至少有一个加油站在道路上的每个地点交付。
我试过的事情:
经过巨大的努力,我得出结论,这很可能是一个动态规划问题。
尝试动态规划-我试图想出一个重复,但绝对没有结果,我发现最困难的部分是,电台提供了双方。为了克服这个问题,我决定我将把车站“移”到最西边的位置,并把东面的运送范围增加同样的数量--不能再继续了。
我发现了一个类似的问题,我认为,dynamic programming proboem for minimum cost,这些问题实际上是相似的吗?
请有人告诉我,这是否实际上是一个动态规划问题,而没有其他方法可以更有效地做到这一点?如果是动态编程,你能给我一些提示吗?
示例:
Suppose N is 4
block 0 : X = 1, Y = 1, C = 2
block 1 : X = 0, Y = 2, C = 1
block 2 : X = 2, Y = 2, C = 5
block 3 : X = 1, Y = 5, C = 7
Then the result will be,
Pay block 0, 1 gas stations.
Min cost : 3发布于 2015-03-17 17:40:16
据我所知,我们想要一套最低成本的加油站,覆盖所有街区。在下面的图中,这可以表示为最短路径问题。为每个加油站创建一个人工源、一个人工水池和一个顶点。对于i < j,ith加油站与jth加油站之间存在一条弧线,当且仅当它们的覆盖范围不存在缺口。人工源在每个加油站都有弧线覆盖块0。人工水槽在每个加油站都有弧形,覆盖了区块n-1。每个电弧的成本是加油站在其顶部的成本(人工水槽的0)。找到从源头到水槽的最短路径;我们沿途访问的顶点是我们应该购买保险的加油站。
运行时间为O(n^2),通常采用线性时间最短路径算法求解无圈有向图.O(n)可能有改进,请参阅discussion on CS。(Yuval指定了O(n log n)时间,但这仅仅是因为他在一个不同的计算模型中工作,排序是Omega(n log n)。)
https://stackoverflow.com/questions/29103825
复制相似问题