AtCoder Beginner Contest 271 E問題 Subsequence Path
問題
提出解答
問題の概要
重み付き有向グラフ が与えられる. なお,
である. 次を満たす有向パス は存在するか? 存在するならばそのような有向パスのうち, 長さの総和の最小値を求めよ.
- は を始点, を終点とする.
- は の連続とは限らない部分列.
制約
- に自己ループはない.
解法
次のような動的計画法で解く.
- を を に制限した場合で, 終点が頂点 であるような有向パスの長さの総和の最小値 (存在しない場合は ).
このとき, ベースケースは のときで
である.
更新式については有向辺 を採用するか否かで場合分けすることによって,
となる. このときの が答えである.
しかし, これをそのまま計算しようとすると, 計算量が 時間/空間となり, 間に合わない.
ところが, 更新式をみてみると, ] を求めるとき, の場合は全て である. よって, ほとんどは の時と同じであることがわかる. よって, ] の計算結果を使い回すことによって, 各 に対する更新を 時間で終了することができる.
このような計算結果の使い回しによって, 時間計算量, 空間計算量共に 時間/ 空間で計算できる.