AT_s8pc_5_c.Two Parentheses
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
E869120 和 square1001 各自拥有一串等长的“正确括号序列”。所谓“正确括号序列”是指符合下列条件的字符串:
()是一个正确的括号序列。- 如果 X 是一个正确的括号序列,那么
(、X 和)连接在一起也是一个正确的括号序列。 - 如果 X 和 Y 都是正确的括号序列,那么 X 和 Y 相连也是一个正确的括号序列。
- 其他任何括号序列都是不正确的。
设 E869120 的括号序列为 A,square1001 的括号序列为 B。chokudai 对 A 和 B 进行了以下操作:
- 将 B 中的每个
(替换为),每个)替换为(。然后,定义一个初始为空的字符串 C,并交替进行以下两种操作,直到 A 和 B 均为空:- 把 A 的首字符移至 C 的末尾,并删除 A 的首字符。
- 把 B 的首字符移至 C 的末尾,并删除 B 的首字符。
给定字符串 S,判断是否可能通过上述操作使得 S=C。如果可以,输出 Yes;否则输出 No。
输入格式
输入通过标准输入给出。你需要回答 Q 个问题。第 i 个问题的字符串为 Si。
第一行输入整数 Q,表示问题的数量。
接下来的 Q 行,每行一个字符串 S1,S2,…,SQ。
输出格式
输出 Q 行。对于每个字符串 Si,如果存在以 S=C 的情况,输出 Yes,否则输出 No。
输入输出样例
输入#1
4 (()) )()( (()) )(()
输出#1
No Yes No Yes
输入#2
1 (())(()(
输出#2
No
输入#3
11 ))(((()()()) ))((())(())( ()())))(()(( )(()())()()( )(())())(()( )(()))()((() )()()()())(( (())(()())() )(())(()())( ((()())(())) )))()())()()
输出#3
Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No
说明/提示
约束
- Q 是 1 到 50 之间的整数。
- Si 是一个长度在 1 到 20 000 之间,仅由
(和)构成的字符串。 - Si 的长度必为 4 的倍数。
子任务
子任务 1 [90 分]
- ∣S∣≤16。
子任务 2 [100 分]
- ∣S∣≤50。
子任务 3 [310 分]
- 无额外约束。
样例解释
例如,在第二个问题中,S2 = )()(。我们可以选择 A = "()", B = ")("。按顺序将字符插入 C 后,可以得到 $C = $ )()(。变化过程如下:
- 初始:A = "()", B = ")(", C = ""
- 第一步:A = "()", B = "(", C = ")"
- 第二步:A = ")", B = "(", C = ")("
- 第三步:A = "", B = "(", C = ")()"
- 第四步:A = "", B = "", C = ")()("
在这个过程中,每步都选择从 A 或 B 中取字符加入 C 末尾。通过合适的选择,我们得以构造出与 S2 相同的序列。
而对于某个问题,如果 ( 和 ) 的数量不相等,比如 ( 出现 5 次,) 只出现 3 次,那么根据括号序列相等原则,根本无法达成 S=C 的条件。
本翻译由 AI 自动生成
输入解题思路,AI测评打分。不知道怎么写?