#CF1830C. 超正则括号序列
超正则括号序列
C. 超正则括号序列
时间限制:3 秒
内存限制:256 MB
给你一个整数 和 个区间。第 个区间为 ,满足 。
如果一个长度为 的正则括号序列†‡ 满足:对于每个 ,子串 也是正则括号序列,则称它是超正则的。
你的任务是统计超正则括号序列的数量。由于这个数字可能很大,你只需要输出它对 取模的结果。
† 括号序列是一个只包含字符 "(" 和 ")" 的字符串。
‡ 如果一个括号序列可以通过添加字符 + 和 1 变成合法的数学表达式,则称它是正则的。例如,(())()、()、(()(())) 和空串都是正则的,而 )(、(() 和 (()))( 不是。
输入格式
每个测试点包含多个测试用例。第一行包含一个整数 ()—— 测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含两个整数 和 (,)—— 超正则括号序列的长度和区间的数量。
接下来的 行,每行包含两个整数 和 ()。
数据保证:所有测试用例的 之和不超过 ,所有测试用例的 之和不超过 。
输出格式
对于每个测试用例,输出一个整数,表示超正则括号序列的数量对 取模的结果。
示例
输入
7
6 0
5 0
8 1
1 3
10 2
3 4
6 9
1000 3
100 701
200 801
300 901
28 5
1 12
3 20
11 14
4 9
18 19
4 3
1 4
1 4
1 4
输出
5
0
0
4
839415253
140
2
样例解释
第一个测试用例:长度为 的 5 个超正则括号序列是:
((()))、(()())、(())()、()(()) 和 ()()()。
第二个测试用例:不存在长度为 的正则括号序列,因此也不存在超正则括号序列。
第三个测试用例:不存在长度为 且子串 是正则括号序列的超正则括号序列。
第四个测试用例:4 个超正则括号序列是:
((())(()))、((())()())、()()((())) 和 ()()(()())。