QOJ.ac

QOJ

حد الوقت: 1 s حد الذاكرة: 512 MB مجموع النقاط: 100

#3420. 叮当球

الإحصائيات

圣诞节装饰树的时间快到了。NWERC 的评委们正在讨论在树上放置装饰品的最佳方式。他们一致认为,将装饰品均匀地分布在树枝上至关重要。

本题仅限于二叉圣诞树。这类树由一个树干组成,树干分裂成两个子树。每个子树本身可能进一步分裂成两个更小的子树,依此类推。不再分裂的子树称为细枝(twig)。细枝可以通过在其上附加最多一个球来进行装饰。

图 1 – 包含子树、细枝和一个球的树的示例。

一棵装饰好的树,当且仅当满足以下要求时,球的分布是均匀的: 在(子)树分裂成两个更小子树 $t_1$ 和 $t_2$ 的每一个点上,左子树中的球总数 $N(t_1)$ 和右子树中的球总数 $N(t_2)$ 必须相等或相差一。即:$|N(t_1) - N(t_2)| \le 1$。

评委们最初热情地将球挂在树上任意的细枝上。当他们找不到更多的球可以挂在树上时,他们退后一步审视结果。在大多数情况下,球的分布并不完全均匀。他们决定通过将一些球移动到不同的细枝上来解决这个问题。

任务

给定树的结构和球的初始位置,计算为了达到上述定义的均匀分布,最少需要移动多少个球。

注意,不允许向树中添加新球,也不允许永久移除树上的球。改变树的唯一方法是将球移动到不同的细枝上。

输入格式

对于每个测试用例,输入由一行描述装饰树的字符串组成。 树的描述由其子树的递归描述组成。(子)树由以下形式之一的字符串表示: 字符串 () 表示没有球的细枝。 字符串 (B) 表示挂有一个球的细枝。 * 字符串 (t1t2) 表示分裂成两个更小子树 $t_1$ 和 $t_2$ 的(子)树,其中 $t_1$ 和 $t_2$ 是此处列出的形式之一的字符串。

一棵树包含至少 2 个且最多 1000 个细枝。

输出格式

对于每个测试用例,打印一行输出。 如果可以将球均匀地分布在树上,则打印为满足均匀分布要求而必须移动的球的最少数量。 如果无法将球均匀分布,则打印单词 impossible

样例

输入 1

((B)())

输出 1

0

输入 2

((((B)(B))((B)()))(B))

输出 2

impossible

输入 3

(()(((B)(B))(B)))

输出 3

1

图 2 – 对应于样例输入用例的树。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.