P16812 [蓝桥杯 2026 国 Python A] 压缩字符串
题目描述
给定一个长度为 $N$ 的字符串 $S$,字符串仅由字符 $0$、$1$ 和 $\#$ 组成。
你可以对字符串 $S$ 进行任意次(包括 $0$ 次)“压缩”操作。一次压缩操作的定义如下:选择字符串中两个相邻且均不为 $\#$ 的字符,删除其中的任意一个。剩余部分的字符将自动拼接在一起。
现给定一个目标长度 $K$。请计算:在进行若干次操作后,最终能够得到多少种不同的、长度恰好为 $K$ 的字符串。由于答案可能很大,请输出方案数对 $998244353$ 取模后的结果。
输入格式
第一行包含两个整数 $N$ 和 $K$,分别表示初始字符串的长度和目标长度。
第二行包含一个长度为 $N$ 且仅由字符 $0$、$1$、$\#$ 组成的字符串 $S$。
输出格式
输出一个整数,表示能够得到的不同字符串的数量对 $998244353$ 取模后的值。
说明/提示
### 【样例说明】
能够得到的不同字符串为:
- 00#1
- 01#1
- 10#1
- 0#11
- 1#11
共 $5$ 种。
### 【评测用例规模与约定】
对于 $20\%$ 的评测用例,$1 \le N \le 200$,字符串 $S$ 中字符 $\#$ 的数量不超过 $1$;
对于所有评测用例,$1 \le N \le 10^5$,$1 \le K \le 2026$,且 $K \le N$,字符串 $S$ 中字符 $\#$ 的数量不超过 $100$。