#xds3109. Parenthesis Checking
Parenthesis Checking
Parenthesis Checking
时间限制:3 秒 / 内存限制:1024 MB
Description
我们定义一个正确的括号序列为满足以下条件之一的字符串:
- 它是一个空字符串。
- 它是由
(
,A
,)
按顺序连接而成,其中A
是一个正确的括号序列。 - 它是由
A
,B
按顺序连接而成,其中A
和B
都是正确的括号序列。
我们有一个长度为 的字符串 ,由 (
和 )
组成。
给定 个查询 $\text{Query}_1, \text{Query}_2, \ldots, \text{Query}_Q$,请按顺序处理它们。查询有两种类型,格式和内容如下:
1 l r
:交换 的第 个和第 个字符。2 l r
:判断从第 个到第 个字符的连续子串是否是一个正确的括号序列。
Input
第一行包含两个整数 和 ,分别表示字符串 的长度和查询的数量。
第二行包含一个长度为 的字符串 ,由 (
和 )
组成。
接下来 行,每行包含一个查询,格式为 1 l r
或 2 l r
,其中 。
保证至少有一个查询的格式为 2 l r
。
Output
对于每个格式为 2 l r
的查询,如果该子串是一个正确的括号序列,则输出 Yes
,否则输出 No
,每个结果占一行。
Example
Sample Input 1
5 3
(())(
2 1 4
2 1 2
2 4 5
Sample Output 1
Yes
No
No
解释
- 第一个查询中,
(())
是一个正确的括号序列。 - 第二个查询中,
((
不是一个正确的括号序列。 - 第三个查询中,
)(
不是一个正确的括号序列。
Sample Input 2
5 3
(())(
2 1 4
1 1 4
2 1 4
Sample Output 2
Yes
No
解释
- 第一个查询中,
(())
是一个正确的括号序列。 - 第二个查询中, 变为
)()((
。 - 第三个查询中,
)()(
不是一个正确的括号序列。
Sample Input 3
8 8
(()(()))
2 2 7
2 2 8
1 2 5
2 3 4
1 3 4
1 3 5
1 1 4
1 6 8
Sample Output 3
Yes
No
No