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 翻译