DPを救いたい

DPの問題のまとめ

我々の前に常に立ちはだかるDP(から我々)を救いたい。
AtCoderにおいてD問題はDPのD!と呼ばれるほど頻出のテクニックであるDP(動的計画法、Dynamic Programming)のまとめ・解説です。
頻出形だが理解が難しいのが困るところ。

D - Step Up Robot
Diff: 551

典型的な1次元DP。
ロボットが階段の0段目からX段目まで登れるかどうかを判定する。
ロボットはAi段飛ばしで階段を登ることができ、また階段のBi段目には餅が置いてあり登れない。
dp[i] = i段目に登る方法
配るDP: dp[i+a[v]] += dp[i] + a[v] (ただし遷移先には餅がない)