AtCoder Beginner Contest 240 C問題 Jumping Takahashi
問題
提出解答
問題の概要
以下を満たす列 は存在するか?
制約
解法
この問題はある意味での部分和問題である. そして, がそれほど大きくはないので, 今回は動的計画法で解くことにする.
で まで決めたとき, 和を にすることができるか? を表すとする (できるならば , できないならば ).
ベースケースは の場合で,
である.
更新式を考える. として を選んだ場合は において和を にできるか? という問題に帰着される. これは で既に計算されている. として を選んだ場合も考えることにより,
となる.
この動的計画法によって, が答えになる.
ここで, において, の場合は明らかに である. また, であるから, における情報は不要である. よって, の場合においてのみ見れば良い. このことから, 時間計算量, 空間計算量ともに で求めることができる.