AT_arc188_a [ARC188A] ABC Symmetry
题目描述
对于由 `A`、`B`、`C` 组成的非空字符串 $T$,如果可以以任意顺序、任意次数地进行以下两种操作,使其变为空字符串,则称其为“好字符串”。
- 操作 $1$:从字符串中选择两个相同的字符并删除(如果没有两个及以上相同的字符则无法进行此操作)。
- 操作 $2$:从字符串中各选择一个 `A`、一个 `B`、一个 `C` 并删除(如果 `A`、`B`、`C` 各至少有一个才可进行此操作)。
例如,`ABACA` 可以通过如下操作变为空字符串,因此是好字符串。
- 选择第 $2,4,5$ 个字符删除(操作 $2$),字符串变为 `AA`。
- 选择第 $1,2$ 个字符删除(操作 $1$),字符串变为空字符串。
给定一个由 `A`、`B`、`C`、`?` 组成、长度为 $N$ 的字符串 $S$。将每个 `?` 替换为 `A`、`B` 或 `C` 后,问有多少种字符串,包含至少 $K$ 个连续的好字符串作为子串。注意,即使是相同的子串,只要在原字符串中的位置不同,也要分别计数。
请输出答案对 $998244353$ 取模后的结果。
输入格式
输入以如下格式从标准输入读入。
> $N$ $K$ $S$
输出格式
请输出答案对 $998244353$ 取模后的整数。
说明/提示
### 限制条件
- $1 \leq N \leq 50$
- $0 \leq K \leq \frac{N(N+1)}{2}$
- $N,K$ 为整数
- $|S|=N$
- $S$ 由 `A`、`B`、`C`、`?` 组成
### 样例解释 1
将 `?` 替换为 `A`、`B`、`C` 后可能得到的字符串有 `AAAB`、`ABAB`、`ACAB` 共 $3$ 个。其中,`AAAB` 包含第 $1,2$ 个字符的 `AA` 以及第 $2,3$ 个字符的 `AA`,共 $2$ 个好字符串作为连续子串。注意,即使是相同的子串,只要在原字符串中的位置不同,也要分别计数。另一方面,`ABAB` 包含的好字符串只有 $1$ 个(`ABAB` 本身)。`ACAB` 也只包含 $1$ 个好字符串(`CAB`)。
### 样例解释 2
请输出答案对 $998244353$ 取模后的结果。
由 ChatGPT 4.1 翻译