在某一条路线的终点下车后,是一个确定的时间,与前面的路线怎么走是无关的。所以可以以终止时间为线索考虑 D P DP DP。
用 d p [ j ] dp[j] dp[j]表示最后走第 j j j号路线的最少消耗。那么对于所有的路线 i i i,如果路线 i i i满足: y [ i ] = x [ j ] , q [ i ] ≤ p [ j ] y[i]=x[j],q[i] \le p[j] y[i]=x[j],q[i]≤p[j],那么可以用路线 i i i按照下列方式更新 d p [ j ] dp[j] dp[j]:
d p [ j ] = m i n ( d p [ j ] , d p [ i ] + A ∗ ( p [ j ] − q [ i ] ) 2 + B ∗ ( p [ j ] − q [ i ] ) + C ) dp[j]=min(dp[j],dp[i]+A*(p[j]-q[i])^2+B*(p[j]-q[i])+C) dp[j]=min(dp[j],dp[i]+A∗(p[j]−q[i])2+B∗(p[j]−q[i])+C)
考虑斜率优化。对于一个最优的转移路线 i i i,有如下式子:
d p [ j ] = d p [ i ] + A ∗ ( p [ j ] − q [ i ] ) 2 + B ∗ ( p [ j ] − q [ i ] ) + C dp[j]=dp[i]+A*(p[j]-q[i])^2+B*(p[j]-q[i])+C dp[j]=dp[i]+A∗(p[j]−q[i])2+B∗(p[j]−q[i])+C
d p [ j ] = d p [ i ] + A ∗ p [ j ] 2 + A ∗ q [ i ] 2 − 2 ∗ A ∗ p [ j ] ∗ q [ i ] + B ∗ p [ j ] − B ∗ q [ i ] + C dp[j]=dp[i]+A*p[j]^2+A*q[i]^2-2*A*p[j]*q[i]+B*p[j]-B*q[i]+C dp[j]=dp[i]+A∗p[j
NOI2019 回家路线
最新推荐文章于 2023-08-19 13:56:54 发布