#C1023. [CSP-S 2021T2] 括号序列
[CSP-S 2021T2] 括号序列
[CSP-S 2021] 括号序列
题目描述
给定长度为 的字符串,其中一些位置已经确定为 (、) 或 *,另一些位置为 ?。你需要将每个 ? 替换成 (、) 或 *,使最终字符串成为符合规范的“超级括号序列”。
给定常数 。符合规范的超级括号序列由字符 (、)、* 组成,定义如下:
()与(S)是符合规范的,其中S表示由不超过 个字符*组成的非空字符串。- 若
A和B均符合规范,则AB与ASB均符合规范。 - 若
A符合规范,则(A)、(SA)、(AS)均符合规范。 - 所有符合规范的序列均可由以上规则得到。
例如当 时,((**()*(*))*)(***) 符合规范,而 *()、(*()*)、((**))*)、(****(*)) 均不符合规范。空字符串也不符合规范。
请计算有多少种替换方法,使得到的字符串符合规范。答案对 取模。
输入格式
第一行两个正整数 。
第二行一个长度为 且仅由 (、)、*、? 构成的字符串 。
输出格式
输出一个非负整数,表示答案对 取模后的结果。
样例 #1
输入 #1
7 3
(*??*??
输出 #1
5
样例 #2
输入 #2
10 2
???(*??(?)
输出 #2
19
数据范围与提示
样例 #1 中,以下几种方案是符合规范的:
(**)*()
(**(*))
(*(**))
(*)**()
(*)(**)
数据范围与提示
| 测试点编号 | 特殊性质 | |
|---|---|---|
| 无 | ||
中仅含字符 ? |
||
| 无 |
对于 的数据,。