P7969 [KSN2021] Self Defence
题目描述
定义一个字符串的权值为它长度为 $M$ 且只包含一种字符的子串数量。
例如字符串 ``ABBB``,在 $M=2$ 时的权值为 $2$。
给定一个长度为 $N$ 的字符串,每个字符为 ``?``,``A`` 和 ``B`` 中的一个,你需要求出将每个 ``?`` 替换为 ``A`` 或 ``B`` 后,可以得到多少个权值为 $K$ 的字符串。
答案对 $10^9+7$ 取模。
输入格式
第一行输入三个整数 $N,M,K$。
第二行输入一个长度为 $N$ 的字符串 $S$。
输出格式
输出一个整数代表答案。
说明/提示
**【样例解释】**
对于第一组样例,以下为所有合法字符串:
```plain
AAAAB
ABBBB
BAAAA
BBBBA
```
对于第二组样例,以下为所有合法字符串:
```plain
AAABA
AABAA
AABBA
ABAAA
ABBAA
ABBBA
```
**【数据范围】**
**本题采用捆绑测试。**
* Subtask 1(5 points):只存在一组数据,满足 $N=10$,$M=3$,$K=5$,$S=\texttt{????A???B?}$。
* Subtask 2(9 points):$N\le 20$。
* Subtask 3(11 points):$N\le 200$。
* Subtask 4(6 points):$M=2$,$K=0$。
* Subtask 5(9 points):$K=0$。
* Subtask 6(8 points):$K\le 1$。
* Subtask 7(27 points):$S$ 只包含 ``?``.
* Subtask 8(25 points):无特殊限制。
对于所有数据,$1\leq N\leq 3000$,$1\leq M\leq N$,$0\leq K\leq N$。