AtCoder Beginner Contest 253 E問題 Distance Sequence
問題
提出解答
問題の概要
次を満たす長さ の整数列 の個数を求めよ.
制約
解法
動的計画法で解く. を次のように定義する.
- 長さが である条件を満たすような列のうち, 末項が であるような数列の数.
このとき, 最終解答は
である.
ベースケースは のときであり, 任意の に対して, である.
遷移式を考える. 第 項として が可能かどうかは第 項目だけにより決定づけられることに注意すると,
である. これをそのまま実装してしまうと, 各 を求めるために 時間かかり, 動的計画法の要素数は なので, 全体で 時間となり間に合わない.
そこで, 更新式を計算して高速に処理できるような形になる.
とおくと,
となる.
の順に を求めることにすると, 各 に対して, を前計算で求めておくと, 前計算 時間, 各 に対して, を求めるために 時間で処理できる.
よって, 全体で 時間で求めることができた.