AtCoder Beginner Contest 291 D問題 Flip Cards
問題
提出解答
問題の概要
枚のカードが一列に並んでいる. 左から 番目のカードの表には整数 が, 裏には整数 が書かれている.
各カードを表か裏が上になるようにカードを置く. このようなカードの置き方のうち, 隣り合っているカードに書かれている整数が等しい箇所がないような置き方の数を求めよ.
制約
解法
左から順に表裏を決めることにすると, 番目のカードの表裏の可否は 番目のカードの状態のみから決定される. このことから, 動的計画法で求めることが有用になる.
と に対して, を以下で定める.
- 左から 番目のカードを条件を満たしながら決定した時, 番目のカードが ならば表, ならば裏であるような置き方の方法の数.
このとき, 最終解答は である.
ベースケースについては のときで, である.
更新式について, について, 枚目のカードの整数について場合分けすると,
となる. についても同様である.
よって, 要素数 , 更新の計算量が 時間/要素であるので, 時間計算量 時間で解くことができた.