A - Frog 1
キーワード
解説
を次のように定義する。
足場 に到達するために支払うコストの最小値
足場 からスタートするため、 とする。
足場 への移動は、足場 または の二通りがある。 へ行くのにかかる最小コストは、足場 または へ行くのにかかる最小コストに、それらから足場 へ行くためのコストを加えたもののうち小さい方。
よって次のような漸化式が立てられる。
最終的な答えは となる。
計算量は、一回の遷移が で行えるため、全体で となる。
提出コード
int main() {
int n; cin >> n;
vector<int> A(n); rep(i, 0, n) cin >> A[i];
vector<int> dp(n+1, 0);
dp[0] = 0;
dp[1] = abs(A[1] - A[0]);
rep(i,2,n) dp[i] = min(dp[i-1] + abs(A[i] - A[i-1]), dp[i-2] + abs(A[i] - A[i-2]));
cout << dp[n-1] << endl;
}