Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 在O(N*N)时间内从城市1到达N的最短时间_Algorithm_Data Structures_Graph_Dynamic Programming - Fatal编程技术网

Algorithm 在O(N*N)时间内从城市1到达N的最短时间

Algorithm 在O(N*N)时间内从城市1到达N的最短时间,algorithm,data-structures,graph,dynamic-programming,Algorithm,Data Structures,Graph,Dynamic Programming,有N城市的成本在数组arr[1..N]中给出。从城市i到达城市j所需的时间是|i-j*arr[i]。 条件:2让我们关注您的DP方法 观察:倒退永远不是最佳选择 我们可以使用简单的DP在O(n^2)中求解: DP(i)-到达城市i的最低成本 DP(1)=0 DP(i)=min 1让我们关注您的DP方法 观察:倒退永远不是最佳选择 我们可以使用简单的DP在O(n^2)中求解: DP(i)-到达城市i的最低成本 DP(1)=0 DP(i)=min11/arr[i]是您在城市停车后离开的速度i 只需从

N
城市的成本在数组
arr[1..N]
中给出。从城市
i
到达城市
j
所需的时间是
|i-j*arr[i]

条件:
2让我们关注您的DP方法

观察:倒退永远不是最佳选择

我们可以使用简单的DP在O(n^2)中求解:

DP(i)
-到达城市i的最低成本

DP(1)=0


DP(i)=min 1让我们关注您的DP方法

观察:倒退永远不是最佳选择

我们可以使用简单的DP在O(n^2)中求解:

DP(i)
-到达城市i的最低成本

DP(1)=0


DP(i)=min1
1/arr[i]
是您在城市停车后离开的速度
i


只需从城市
1
出发前往城市
N
,然后在任何可以提高速度的城市
i
停车即可。也就是说,在任何一个城市停车时,arr[i]
比您上次停车时要低。

1/arr[i]
是您在城市停车后离开的速度


只需从城市
1
出发前往城市
N
,然后在任何可以提高速度的城市
i
停车即可。也就是说,在任何一个比上一次停车时的arr[i]
更低的城市停车。

非常敏锐的观察。非常敏锐的观察。
DP(i) = min 1 <= j < i { ( DP(j) - j * arr[j] ) + i * arr[j] }
a_j = arr[j]
b_j = DP(j) - j * arr[j]
x = i

F_j(x) = a_j * x + b_j