CF1830C.Hyperregular Bracket Strings
提高+/省选-
通过率:0%
时间限制:3.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given an integer n and k intervals. The i-th interval is [li,ri] where 1≤li≤ri≤n.
Let us call a regular bracket sequence†,‡ of length n hyperregular if for each i such that 1≤i≤k, the substring slisli+1…sri is also a regular bracket sequence.
Your task is to count the number of hyperregular bracket sequences. Since this number can be really large, you are only required to find it modulo 998244353.
† A bracket sequence is a string containing only the characters "(" and ")".
‡ A bracket sequence is called regular if one can turn it into a valid math expression by adding characters + and 1. For example, sequences (())(), (), (()(())) and the empty string are regular, while )(, ((), and (()))( are not.
给你一个整数 n 和 k 个区间。第 i 个区间为 [li,ri],其中 1≤li≤ri≤n。
我们称一个长度为 n 的正规括号序列†,‡ 是超正规的,如果对每个满足 1≤i≤k 的 i,子串 slisli+1…sri 本身也是一个正规括号序列。
你的任务是计算超正规括号序列的个数。由于该数目可能非常大,你只需输出其对 998244353 取模的结果。
† 括号序列是指仅由字符 "(" 和 ")" 组成的字符串。
‡ 若一个括号序列可通过添加字符 "+" 和 "1" 而变成一个合法的数学表达式,则称其为正规的。例如,序列 (())(), (), (()(())) 以及空串是正规的,而 )(、(() 和 (()))( 则不是。
输入格式
Each test contains multiple test cases. The first line of input contains a single integer t (1≤t≤105) — the number of test cases. The description of test cases follows.
The first line of each test case contains two integers n and k (1≤n≤3⋅105, 0≤k≤3⋅105) — the length of the hyperregular bracket sequences and the number of intervals respectively.
The following k lines of each test case contains two integers li and ri (1≤l≤r≤n).
It is guaranteed that the sum of n across all test cases does not exceed 3⋅105 and the sum of k across all test cases does not exceed 3⋅105.
每个测试包含多个测试用例。输入的第一行包含一个整数 t(1≤t≤105),表示测试用例的数量。随后是各测试用例的描述。
每个测试用例的第一行包含两个整数 n 和 k(1≤n≤3⋅105,0≤k≤3⋅105),分别表示超正则括号序列的长度和区间的数量。
每个测试用例的接下来 k 行,每行包含两个整数 li 和 ri(1≤li≤ri≤n)。
保证所有测试用例中 n 的总和不超过 3⋅105,且所有测试用例中 k 的总和不超过 3⋅105。
输出格式
For each test case, output the number of hyperregular bracket sequences modulo 998244353.
对于每个测试用例,输出超正则括号序列的数量对 998244353 取模的结果。
输入输出样例
输入#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
输出#1
5 0 0 4 839415253 140 2
说明/提示
-
For the first testcase, the 5 hyperregular bracket strings of length 6 are: ((())), (()()), (())(), ()(()) and ()()().
-
For the second testcase, there are no regular bracket strings of length 5, and consequently, there are no hyperregular bracket strings of length 5.
-
For the third testcase, there are no hyperregular bracket strings of length 8 for which the substring [1…3] is a regular bracket string.
-
For the fourth testcase, there 4 hyperregular bracket strings are: ((())(())), ((())()()), ()()((())) and ()()(()())
-
对于第一个测试用例,长度为 6 的 5 个超正则括号串为:((())), (()()), (())(), ()(()) 和 ()()()。
-
对于第二个测试用例,不存在长度为 5 的正则括号串,因此也不存在长度为 5 的超正则括号串。
-
对于第三个测试用例,不存在长度为 8 的超正则括号串,使得其子串 [1…3] 是一个正则括号串。
-
对于第四个测试用例,存在 4 个超正则括号串:((())(())), ((())()()), ()()((())) 和 ()()(()())。
输入解题思路,AI测评打分。不知道怎么写?