#P1335. Digital Onion

Digital Onion

题目描述

“数字洋葱(简称为 DODO)” 由括号组成。空括号(即没有括号)是一个 DODO,“ ()( ) ” 也是一个 DODO。那么,所有的 DODO 可以通过以下方式进行形式化的递归定义:

定义:空括号是一个 DODO。特别地,我们称其为DODO

定义:“ ()( ) ” 是一个 DODO。特别地,我们称其为原始 DODO

定义:如果 AABB 都是 DODO,那么 “ (A)B(A)B ” 这种组合形式也是一个 DODO,其中我们称 AA 为该 DODO内部BB 为该 DODO外部

例如,“ (())()( ( ) ) ( ) ” 是一个 DODO,“ ((()))(()()())( ( ( ) ) ) ( ( ) ( ) ( ) ) ” 也是一个 DODO,但 “ ()())((( ) ( ) ) ( ( ” 和 “ (()))( ( ) ) ) ” 不是 DODO。让我们来定义一个 DODO 的权重。一个 DODO 的权重被定义为其中 “ (( ” 的数量,或者等价地,是 “ )) ” 的数量。因此,空 DODO 的权重为 00,原始 DODO()( ) ” 的权重为 11。同样,很容易看出 “ ((()))(()()())( ( ( ) ) ) ( ( ) ( ) ( ) ) ” 的权重为 77

此外,如果 X=((()))(()()())X = ( ( ( ) ) ) ( ( ) ( ) ( ) )XX 的内部是 (())( ( ) )XX 的外部是 (()()())( ( ) ( ) ( ) )。当 X=(()(()))X = ( ( ) ( ( ) ) ) 时,XX 的内部 DODO()(())( ) ( ( ) )XX 的外部 DODO 应该是空 DODO

然后,我们定义所有 DODO 对象的价格顺序。排序规则很简单,我们可以根据它们的价格对所有 DODO 进行排序。这意味着给定两个不同的 DODO,我们总能确定哪一个更贵。

[规则 1]:权重越大,价格越贵。

[规则 2]:如果两个 DODO 的权重相等,那么价格取决于这两个 DODO 的内部 DODO

[规则 3]:如果两个 DODO 的权重相同且内部 DODO 的价格相等,那么价格取决于这两个 DODO 的外部 DODO

让我们来解释一下这些规则。有两个 DODOAABB。我们用 A<BA < B 表示 BBAA 更贵。根据规则 1,很容易看出 ()<(())( ) < ( ( ) )(())()<((()))()( ( ) ) ( ) < ( ( ( ) ) ) ( );根据规则 2,(())(())<((()))()( ( ) ) ( ( ) ) < ( ( ( ) ) ) ( );根据规则 3,(())()()<(())(())( ( ) ) ( ) ( ) < ( ( ) ) ( ( ) )。给定一个 DODO XX,你的任务是写出 “下一个更贵的 DODONMEDNMED)”,它是一个比 XX 更贵的 DODO,并且不存在价格介于 NMEDNMEDXX 之间的 DODO。这意味着当我们根据价格对所有可能的 DODO 进行排序时,NMEDNMED 是给定 DODO 的下一个等级的 DODO

输入

输入包含 TT 个测试用例。测试用例的数量 TT 在输入文件的第一行给出。每个测试用例的 DODO 写在单独的一行中。每行的末尾放置一个 “ ” 符号来表示每个输入 DODO 表示的结束,并且 “ (( ”、“ )) ” 和 “ ” 之间至少有一个空格。注意,输入 DODO 的最小权重为 11,最大权重为 3030

输出

每个测试用例精确地输出一行。该行应包含下一个更贵的 DODONMEDNMED),并以结束标记 “ ” 结尾。按照输入格式的规定,“ (( ”、“ )) ” 和 “ ” 之间至少有一个空格。

输入样例

3
( ) $
( ) ( ) $
( ( ) ( ( ) ) ) ( ( )( ) ) $

输出样例

( ) ( ) $
( ( ) ) $
( ( ) ( ( ) ) ) ( ( ( ) ) ) $

题目来源

Taejon 2002