#P1335. Digital Onion
Digital Onion
题目描述
“数字洋葱(简称为 )” 由括号组成。空括号(即没有括号)是一个 ,“ ” 也是一个 。那么,所有的 可以通过以下方式进行形式化的递归定义:
定义:空括号是一个 。特别地,我们称其为空 。
定义:“ ” 是一个 。特别地,我们称其为原始 。
定义:如果 和 都是 ,那么 “ ” 这种组合形式也是一个 ,其中我们称 为该 的内部, 为该 的外部。
例如,“ ” 是一个 ,“ ” 也是一个 ,但 “ ” 和 “ ” 不是 。让我们来定义一个 的权重。一个 的权重被定义为其中 “ ” 的数量,或者等价地,是 “ ” 的数量。因此,空 的权重为 ,原始 “ ” 的权重为 。同样,很容易看出 “ ” 的权重为 。
此外,如果 , 的内部是 , 的外部是 。当 时, 的内部 是 , 的外部 应该是空 。
然后,我们定义所有 对象的价格顺序。排序规则很简单,我们可以根据它们的价格对所有 进行排序。这意味着给定两个不同的 ,我们总能确定哪一个更贵。
[规则 1]:权重越大,价格越贵。
[规则 2]:如果两个 的权重相等,那么价格取决于这两个 的内部 。
[规则 3]:如果两个 的权重相同且内部 的价格相等,那么价格取决于这两个 的外部 。
让我们来解释一下这些规则。有两个 , 和 。我们用 表示 比 更贵。根据规则 1,很容易看出 和 ;根据规则 2,;根据规则 3,。给定一个 ,你的任务是写出 “下一个更贵的 ()”,它是一个比 更贵的 ,并且不存在价格介于 和 之间的 。这意味着当我们根据价格对所有可能的 进行排序时, 是给定 的下一个等级的 。
输入
输入包含 个测试用例。测试用例的数量 在输入文件的第一行给出。每个测试用例的 写在单独的一行中。每行的末尾放置一个 “ ” 符号来表示每个输入 表示的结束,并且 “ ”、“ ” 和 “ ” 之间至少有一个空格。注意,输入 的最小权重为 ,最大权重为 。
输出
每个测试用例精确地输出一行。该行应包含下一个更贵的 (),并以结束标记 “ ” 结尾。按照输入格式的规定,“ ”、“ ” 和 “ ” 之间至少有一个空格。
输入样例
3
( ) $
( ) ( ) $
( ( ) ( ( ) ) ) ( ( )( ) ) $
输出样例
( ) ( ) $
( ( ) ) $
( ( ) ( ( ) ) ) ( ( ( ) ) ) $
题目来源
Taejon 2002