#C1023. [CSP-S 2021T2] 括号序列

    ID: 4497 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: 4 上传者: 标签>CSP-S提高级2021年区间DP括号序列DP区间dp

[CSP-S 2021T2] 括号序列

[CSP-S 2021] 括号序列

题目描述

给定长度为 nn 的字符串,其中一些位置已经确定为 ()*,另一些位置为 ?。你需要将每个 ? 替换成 ()*,使最终字符串成为符合规范的“超级括号序列”。

给定常数 kk。符合规范的超级括号序列由字符 ()* 组成,定义如下:

  1. ()(S) 是符合规范的,其中 S 表示由不超过 kk 个字符 * 组成的非空字符串。
  2. AB 均符合规范,则 ABASB 均符合规范。
  3. A 符合规范,则 (A)(SA)(AS) 均符合规范。
  4. 所有符合规范的序列均可由以上规则得到。

例如当 k=3k=3 时,((**()*(*))*)(***) 符合规范,而 *()(*()*)((**))*)(****(*)) 均不符合规范。空字符串也不符合规范。

请计算有多少种替换方法,使得到的字符串符合规范。答案对 109+710^9+7 取模。

输入格式

第一行两个正整数 n,kn,k

第二行一个长度为 nn 且仅由 ()*? 构成的字符串 SS

输出格式

输出一个非负整数,表示答案对 109+710^9+7 取模后的结果。

样例 #1

输入 #1

7 3
(*??*??

输出 #1

5

样例 #2

输入 #2

10 2
???(*??(?)

输出 #2

19

数据范围与提示

样例 #1 中,以下几种方案是符合规范的:

(**)*()
(**(*))
(*(**))
(*)**()
(*)(**)

数据范围与提示

测试点编号 nn\le 特殊性质
131\sim3 1515
484\sim8 4040
9139\sim13 100100
141514\sim15 500500 SS 中仅含字符 ?
162016\sim20

对于 100%100\% 的数据,1kn5001\le k\le n\le 500

附件下载

bracket.zip