C. Kevin的括号序列

    传统题 1000ms 256MiB

Kevin的括号序列

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

Kevin 有一个长度为 (n) 的括号序列 (s),只包含左括号 ( 和右括号 )
他最多可以执行一次如下操作:

  1. 选择 (s) 的一个 子串(连续的一段),将其删除。
  2. 然后,将删除的这些括号逐个重新插入到剩余的字符串中。每个括号可以放在任意位置,与其他括号无关。

Kevin 想知道:是否有可能在执行最多一次操作后,整个序列变成一个 合法括号序列

合法括号序列满足:

  • 左括号和右括号数量相等;
  • 在任意前缀中,左括号的数量不少于右括号的数量。

输入格式

第一行一个整数 t(1 <= t <= 10000),表示测试用例的数量。 (保证t组样例n的和小于等于200000) 每个测试用例由两行组成:

  • 第一行一个整数 n(1 <= n <= 200000),表示字符串 s 的长度。
  • 第二行一个长度为 n 的字符串 s,仅包含 ()

保证所有测试用例的 n 之和不超过 200000。

输出格式

对于每个测试用例,如果 Kevin 能达到目标,输出 "Yes",否则输出 "No"

样例

6
2
()
2
)(
3
(((
6
())(()
4
(()(
5
)()()
Yes
Yes
No
Yes
No
No

样例解释

在第一个测试案例中,字符串 ss 已经是一个合法括号序列,因此答案是 "Yes"。

在第二个测试案例中,我们可以删除子串 s[2,2]=(s[2, 2] = \texttt{(} 并将其重新插入字符串的开头,使其成为 s=()s = \texttt{()} ,因此答案为 "Yes"。

在第三个测试案例中,我们无法进行操作并得到合法括号序列,因此答案为 "No"。

在第四个测试案例中,我们可以选择子串 s[3,4]=)(s[3, 4] = \texttt{)(} ,删除它,然后重新插入字符,答案是 "Yes"。

编程素养挑战赛-模拟赛 4

未参加
状态
已结束
规则
OI
题目
6
开始于
2026-5-30 9:00
结束于
2026-5-31 21:00
持续时间
2 小时
主持人
参赛人数
25