[ARC108D] AB
题意
每次操作可以:
- 若 \(s_i = A\) 且 \(s_i + 1 = A\),则插入字母 \(c_{AA}\)。
- 若 \(s_i = A\) 且 \(s_i + 1 = B\),则插入字母 \(c_{AB}\)。
- 若 \(s_i = B\) 且 \(s_i + 1 = A\),则插入字母 \(c_{BA}\)。
- 若 \(s_i = B\) 且 \(s_i + 1 = B\),则插入字母 \(c_{BB}\)。
初始 \(s = AB\),求 \(n - 2\) 次操作后 \(s\) 的方案数。
\(n \le 10 ^ 3\)。
Sol
注意到 \(s\) 的初值很特殊,只能进行一次 \(AB\) 操作。
分类讨论,若 \(AB = B, BB = B\) 那么显然字符串只会有一种情况。
若 \(AB = B, BB = A, BA = B\),考虑添加的过程,发现要么在字符串左边添加一个 \(B\),要么添加一个 \(BA\),因此 \(f_i = f_{i - 1} + f_{i - 2}\)。
若 \(AB = B, BB = A, BA = A\),同理,发现要么添加一个 \(A\),要么添加一个 \(B\),因此答案为 \(2 ^ {n - 3}\)。
当 \(AB = A\) 时同理,做完了。