题目传送门
大致思路
要想路径最短,肯定在 $x$ 轴上不会走回头路
$y$ 轴上只会走到当前 $x$ 坐标的最顶端或最底端,否则会出现重复走一段路的情况
记$dp_{i,0},dp_{i,1}$分别为 $x$ 坐标为 $i$ 且走到最顶端 , 或最底端的最小步数
那么有
$dp_{i,0}=min(dp_{[i-1][0]}+abs(a_{[i-1][0]}-a_{[i][1]}),dp_{[i-1][1]}+abs(a_{[i-1][1]}-a_{[i][1]}))+a_{[i][0]}-a_{[i][1]}$
$dp_{i,1}=min(dp_{[i-1][0]}+abs(a_{[i-1][0]}-a_{[i][0]}),dp_{[i-1][1]}+abs(a_{[i-1][1]-a_{[i][0]}}))+a_{[i][0]}-a_{[i][1]}$
其中$a_{[i][0]},a_{[i][1]}$是 $x$ 坐标为 $i$ 时的最顶端和最底端的 $y$ 值
Code
1 | void solve() { |
说些什么吧!