CF1709C Recover an RBS

题目描述

括号序列是只包含字符“(”和“)”的字符串。一个合法括号序列(简称 RBS)是指可以通过在原序列的字符之间插入“1”和“+”字符,将其转化为正确的算术表达式的括号序列。例如: - 括号序列“()()”和“(())”是合法的(对应的表达式分别为“(1)+(1)”和“((1+1)+1)”); - 括号序列“)(”、“(”和“)”不是合法的。 现在有一个 RBS,其中某些括号被替换成了问号。请判断是否存在唯一一种方式将所有问号替换为括号,使得最终得到的序列是一个 RBS?

输入格式

第一行包含一个整数 $t$($1 \le t \le 5 \cdot 10^4$),表示测试用例的数量。 每个测试用例占一行,包含一个括号序列,其中某些括号被问号替换。每个字符都是“(”、“)”或“?”。保证至少存在一种方式可以将问号替换为括号,使得得到的序列是 RBS。 所有测试用例中括号序列的总长度不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,如果将问号替换为括号使得序列成为 RBS 的方式是唯一的,输出“YES”;如果存在多种方式,输出“NO”。

说明/提示

在第一个测试用例中,唯一可能的原始 RBS 是“(())”。 在第二个测试用例中,有多种方式可以恢复出 RBS。 在第三个和第四个测试用例中,唯一可能的原始 RBS 是“()”。 在第五个测试用例中,原始 RBS 可能是“((()()))”或“(())()()”。 由 ChatGPT 4.1 翻译