QOJ.ac

QOJ

Límite de tiempo: 2 s Límite de memoria: 256 MB Puntuación total: 100

#5257. 洗钱

Estadísticas

考虑一家公司 $A$,今年盈利 $100\,\text{€}$。该公司的所有者为 Ivan(持股 $52.8\%$)和 Robi(持股 $47.2\%$)。自然地,利润按持股比例分配,Ivan 获得 $52.8\,\text{€}$,Robi 获得 $47.2\,\text{€}$。

他们需要为收到的利润纳税,但如果可能的话,他们希望避免纳税。遗憾的是,他们公司的所有权结构太简单了,很容易查出他们每个人收到了多少利润。

为了来年,他们准备了一个计划。他们成立了一家空壳公司 $B$ 并更改了所有权份额。现在 Ivan 只拥有公司 $A$ 的 $1\%$,Robi 只拥有 $2\%$,公司 $B$ 拥有 $A$ 的 $49\%$ 股份,而 $A$ 拥有其自身 $48\%$ 的股份。公司 $B$ 具有类似的所有权结构:$70\%$ 的所有权属于 $B$ 自身,$25\%$ 属于 $A$,$3\%$ 属于 Ivan,$2\%$ 属于 Robi。

天真地看,Ivan 和 Robi 的持股比例非常小。然而,我们感兴趣的是最终受益所有人的所有权份额,即最终获利的人(在我们的例子中是 Ivan 和 Robi)。我们希望确定他们的最终所有权份额,结果发现这与引入 $B$ 之前大致相等。

最终所有权份额可以按如下方式确定:设公司 $A$ 有 $100\,\text{€}$ 的利润,$B$ 有 $0\,\text{€}$ 的利润。利润按其所有权份额的比例支付给所有直接所有者。然而,由于 $A$ 和 $B$ 是其自身的部分所有者,它们会收到一部分利润。为了确定最终受益所有人的最终份额,我们重复该过程——$A$ 和 $B$ 收到的任何利润再次被支付出去,Ivan 和 Robi 获得一部分份额,同时 $A$ 和 $B$ 也获得一部分。这一过程无限重复(理论上,在无限次步骤之后),直到所有资金都支付给最终受益所有人,而 Ivan 和 Robi 最终收到的金额之比,按定义等于他们对 $A$ 的最终份额。

对于给定的公司结构,确定最终受益所有人的份额。然而,这些公司并不构成随机的所有权网络,而是按工业部门进行结构化。部门内的公司可以形成任意的所有权结构,但不同部门的公司并非如此。如果公司 $P$ 和 $Q$ 属于不同的部门,则不可能发生以下情况: $P$ 拥有 $Q$ 的(潜在间接)股份,且 $Q$ 拥有 $P$ 的(潜在间接)股份。

这两个陈述中,一个或零个可能为真,但不能同时为真。

输入格式

第一行包含两个空格分隔的整数 $c$ 和 $p$,分别代表公司数量和人数。接下来有 $c$ 行,第 $i$ 行包含第 $i$ 家公司的描述。该行包含一个整数 $k_i$,即所有者的数量,随后是 $k_i$ 个形式为 $o_{i,j} : p_{i,j}$ 的条目,其中 $o_{i,j}$ 是第 $j$ 个所有者(人或公司)的标识,而 $p_{i,j}$ 是其百分比份额。份额将恰好保留一位小数。

数据范围

  • $1 \le c, p \le 10^3$
  • $1 \le \sum_{i=1}^c k_i \le 10^4$
  • $o_{i,j}$ 可以有两种形式:$Px$ 或 $Cy$,分别表示所有者是第 $x$ 个人或第 $y$ 家公司。保证 $1 \le x \le p$ 且 $1 \le y \le c$。
  • $k_i \ge 1$
  • $0 < p_{i,j} \le 100$
  • $\sum_{j=1}^{k_i} p_{i,j} = 100$
  • 标识符 $\{o_{i,j}\}_{j=1}^{k_i}$ 是唯一的,即每个所有者最多被列出一次。
  • 每个部门所属的公司数量少于 $10$。
  • 每家公司至少有一名最终受益所有人。例如,禁止 $A$ 拥有 $B$ 的 $100\%$ 股份且 $B$ 拥有 $A$ 的 $100\%$ 股份的方案。

输出格式

输出所有人在所有公司中的最终所有权份额。第 $i$ 行应包含所有人在第 $i$ 家公司中的份额,包括没有份额的人。份额在 $0$ 到 $1$ 之间。行内的份额应以空格分隔。如果绝对误差或相对误差小于 $10^{-4}$,则答案将被视为正确。

样例

输入 1

2 2
2 P1:50.1 P2:49.9
2 P1:23.4 P2:76.6

输出 1

0.501000 0.499000
0.234000 0.766000

输入 2

2 2
2 P1:50.0 P2:50.0
3 P1:20.0 P2:30.0 C1:50.0

输出 2

0.500000 0.500000
0.450000 0.550000

输入 3

2 2
4 P1:1.0 P2:2.0 C2:49.0 C1:48.0
4 C2:70.0 C1:25.0 P1:3.0 P2:2.0

输出 3

0.528358 0.471642
0.540299 0.459701

输入 4

3 2
5 P1:1.0 P2:2.0 C2:49.0 C1:38.0 C3:10.0
4 C2:70.0 C1:25.0 P1:3.0 P2:2.0
2 P1:20.0 P2:80.0

输出 4

0.373228 0.626772
0.411024 0.588976
0.2 0.8

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.