CF2223A Zhily and Bracket Swapping
题目描述
在荒野深处,Zhily 和 Jily 发现了两个由括号组成的序列。每个序列都具有一定的逻辑结构,但它们本身都不一定是合法的括号序列。他们发现,通过在这两个序列之间交换括号,可以修复这两个序列。他们希望通过在两者之间交换括号,将两个序列都变为合法的括号序列。
合法的括号序列是由字符 '(' 和 ')' 构成的序列,通过在适当位置插入 $1$ 和 $+$ 可以变成一个有效的数学表达式。例如,序列 "()(()())" 是合法括号序列,而 "())((" 或 "(()" 则不是合法括号序列。
现给出长度为 $n$ 的两个括号序列 $a$ 和 $b$,其中 $n$ 为偶数。你可以进行如下操作任意多次:
- 选择一个位置 $i$($1 \leq i \leq n$),交换 $a_i$ 和 $b_i$。
请判断能否通过若干次这样的操作,使得两个序列 $a$ 和 $b$ 都变为合法的括号序列。
输入格式
每个测试点包含多个测试用例。第一行为测试用例的数量 $t$($1 \le t \le 10^4$)。接下来描述每个测试用例。
每个测试用例的第一行包含一个整数 $n$($2 \leq n \leq 2 \cdot 10^5$,且 $n$ 为偶数),表示字符串 $a$ 和 $b$ 的长度。
第二行为长度为 $n$ 的序列 $a$,仅包含 '(' 和 ')' 两种字符。
第三行为长度为 $n$ 的序列 $b$,仅包含 '(' 和 ')' 两种字符。
保证所有测试用例中 $n$ 之和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,如果可以将 $a$ 和 $b$ 均变为合法括号序列,输出 "YES";否则输出 "NO"。你可以使用任意大小写形式,如 "yES"、"yes"、"Yes" 等均被认为是肯定的答案。
说明/提示
在第 $1$、$4$、$6$ 个测试用例中,$a$ 和 $b$ 最初就是合法括号序列。
在第 $2$ 和第 $3$ 个测试用例中,$a_1$ 或 $b_1$ 有一个是 ')',这使得它们无法成为合法括号序列。
在第 $5$ 个测试用例中,最终的序列可能为 $\texttt{(((}{\color{red}\texttt{)}}\texttt{))}$ 和 $\texttt{()(}{\color{red}\texttt{(}}\texttt{))}$,其中需要交换的括号已用红色标记。
由 ChatGPT 5 翻译