ツバサの備忘録

主に備忘録代わりに精進記録を載せていくつもりです。

Educational DP Contest / DP まとめコンテスト A - Frog 1,B - Frog 2

問題(A)
問題(B)
提出コード(B)
Bの問題においてK=2とすればAの問題と同じになります。

解法

dp[i] = i個目の足場に行くための最小コスト、とします。すると、
dp[N]が答えになります。
あとは、
dp[i] = min(dp[i-j] + | h_{i} - h_{j} |)
となります。ここで、jは1以上K以下かつ、i-jが0以上となるような数字です。
今回のDPは、半分全探索をするようなイメージです。
i個目の足場に行くには、その1~K個前の足場からジャンプするしかないです。上の数値で言うとi-jの足場からしi個目の足場へジャンプすることはできません。ということで、足場1から、足場i-jまでのコストの最小値が全て計算されていたなら、i-jからiへ仮に飛んだ場合のコストも求めることができます。これをすべてのjに対して計算し、最小値を選べば、足場1からiまでの最小コストが計算できます。