A167221.[GESP202609 七级]括号序列
普及/提高-
GESP
通过率:0%
时间限制:1.00s
内存限制:512MB
题目描述
对于字符串 S 与 T,如果从 S 中删除任意多个字符可以得到 T,那么 T 是 S 的子序列。换言之,T 是选取 S 中的若干字符按下标顺序连接而成的。两个子序列不同当且仅当所选取的下标不同。
例如 sun 是 sequence 的子序列,因为从 sequence 中删除 eq、e 和 ce 可以得到 sun;sequence 有 28 个不同的子序列,其中有空字符串,也有三个不同的子序列 e,因为 sequence 的第 2,5,8 个字符都为 e,分别保留这三个字符得到的子序列是不同的。
对于字符串 S,如果 S 满足以下条件那么 S 是合法括号序列:
- S 是空字符串,或者
- S 可由
(、合法括号序列、)三者连接得到,或者 - S 可由两个合法括号序列连接得到。
例如 ()、()()、(()) 和 (()()) 都是合法括号序列。但是 (()、)( 不是合法括号序列。
给定一个长度为 n 的仅包含 ( 与 ) 的字符串 S。请你求出 S 所有 2n 个子序列中有多少个合法括号序列。由于答案可能很大,请你输出答案对 109 取模的结果。
例如,S 为 ))(()( 时共有 3 个子序列是合法括号序列,分别为空字符串与两个不同的子序列 ()。
输入格式
第一行,一个正整数 n,表示字符串 S 的长度。
第二行,长度为 n 的仅包含 ( 与 ) 的字符串 S。
输出格式
输出一行,一个整数,表示 S 的合法括号子序列的数量对 109 取模的结果。
输入输出样例
输入#1
6 ))(()(
输出#1
3
输入#2
34 ((((((((((((((((()))))))))))))))))
输出#2
333606220
说明/提示
数据范围
对于 40% 的测试点,保证 1≤n≤400。
对于所有测试点,保证 1≤n≤2000。
输入解题思路,AI测评打分。不知道怎么写?