ツバサの備忘録

主に備忘録代わりに精進記録を載せていくつもりです。

ABC071 D - Coloring Dominoes

問題
提出コード

解法

縦になっているドミノ1本と、横になっているドミノ2本をそれぞれ1セットとして考えていきます。これは、x文字目の上下が一致しているかどうかを調べるだけで簡単に判断できます。横になっているセットについては、次のセットに行くときに、x+1番目の文字ではなくx+2番目の文字を見るようにしておきます。
この問題では、左から順番に見ていくと、iセット目のドミノについて、i-1セット目のドミノ以外は色の付け方に影響がありません。i-2番目より手前のドミノはi番目の色の付け方とは無関係です。
ので、左から順番に見ていくだけで答えを求めることができます。
まず、一番左のセットについての塗り方を考えると、

  • 縦のセット:3通り

  • 横のセット:6通り

となります。
次に、iセット目のドミノの色の付け方を考えます。
i-1i番目がどのセットになっているかによるので、4通り存在します。

  • i-1番目が縦、i番目も縦:i-1番目までの塗り方の2倍です。

  • i-1番目が縦、i番目が横:i-1番目までの塗り方の2倍です。

  • i-1番目が横、i番目が縦:i-1番目までの塗り方のままです。

  • i-1番目が横、i番目も横:i-1番目までの塗り方の3倍です。

というようにして、i-1番目までの色の付け方を1~3倍していくことで、最終的に最後のドミノまでの色の付け方を求めることができます。
あとは、modをとり忘れないようにしつつ、計算していけば答えを求めることができます。