100 atcoder#AGC055D. [AGC055D] ABC Ultimatum

[AGC055D] ABC Ultimatum

题目描述

A, B, C をそれぞれちょうど N N 個ずつ含む長さ 3N 3N の文字列 T T が次の条件を満たすとき、T T 良い文字列と呼びます: T T N N 個の長さ 3 3 の(連続とは限らない)部分列に分解する方法であって、各部分列が ABC, BCA, CAB のいずれかであるような方法が存在する。

A, B, C, ? からなる長さ 3N 3N の文字列 S S が与えられます。各 ?A, B, C のいずれかに置き換える方法であって、結果が良い文字列となるようなものの個数を求めてください。この個数は非常に大きい可能性があるため、これを 998244353 998244353 で割った余りを出力してください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N S S

输出格式

答えを 998244353 998244353 で割った余りを出力せよ。

题目大意

称一个长度为 3n3n,只由 A,B,C\text{A,B,C} 组成的字符串是好的,当且仅当其能划分成 nn 个长度为 33 的子序列,每个子序列都是 ABC\text{ABC},或者 BCA\text{BCA},或者 CAB\text{CAB}。求把问号替换成 A,B,C\text{A,B,C} 使得字符串是好的的方案数 mod 998244353\bmod\ 998244353

1
???
3
2
AA????
2
3
?A?A?A?A?
0
9
?????????A??B??C???????????
331653164

提示

制約

  • 1 N  15 1\le\ N\ \le\ 15
  • S S は、A, B, C, ? からなる長さ 3N 3N の文字列である。

Sample Explanation 1

得られる良い文字列は、ABC, BCA, CAB3 3 個です。

Sample Explanation 2

得られる良い文字列は、AABBCC, AABCBC2 2 個です。

Sample Explanation 3

A が既に 4 4 個含まれるため、良い文字列を得ることはできません。