#P16868. [GKS 2021 #H] Dependent Events

    ID: 19195 远端评测题 4000ms 1024MiB 尝试: 0 已通过: 0 显示难度提高 上传者: 标签>数学倍增2021最近公共祖先 LCA概率论Google Kick Start

[GKS 2021 #H] Dependent Events

题目描述

有 NN 个事件,编号为 11 到 NN。每个事件的发生概率依赖于恰好另一个事件(称为父事件)的发生,但事件 11 除外,它是一个独立事件。换句话说,对于每个事件 ii(2≤i≤N2 \le i \le N),给定三个值:PiP_i 表示事件 ii 的父事件,AiA_i 表示当父事件发生时事件 ii 发生的概率,BiB_i 表示当父事件不发生时事件 ii 发生的概率。对于事件 11,其发生概率 KK 已给出。我们需要回答 QQ 个查询。每个查询包含两个不同的事件 uju_j 和 vjv_j,你需要求出事件 uju_j 和 vjv_j 同时发生的概率。

输入格式

输入的第一行给出测试用例的数量 TT。接下来有 TT 个测试用例。

每个测试用例的第一行包含两个整数 NN 和 QQ,分别表示事件的数量和查询的数量。接下来 NN 行描述每个事件。第一行包含一个整数 KK,表示事件 11 的发生概率乘以 10610^6。接下来的 N−1N-1 行,每行包含三个整数 PiP_i、AiA_i 和 BiB_i,分别表示事件 ii 的父事件、当父事件发生时事件 ii 的发生概率乘以 10610^6,以及当父事件不发生时事件 ii 的发生概率乘以 10610^6。然后,有 QQ 行描述查询,每行包含两个不同的整数 uju_j 和 vjv_j。对于每个查询,求出事件 uju_j 和 vjv_j 同时发生的概率。

输出格式

对于每个测试用例,输出一行,格式为 Case #x: R1 R2 R3 ... RQ,其中 xx 是测试用例编号(从 11 开始),RjR_j 是为第 jj 个查询计算出的概率对 109+710^9 + 7 取模的结果,其精确定义如下。将第 jj 个查询的答案表示为最简分数 pq\frac{p}{q},则 RjR_j 必须满足模方程 Rj×q≡p(mod109+7)R_j \times q \equiv p \pmod{10^9 + 7},且 0≤Rj≤109+60 \le R_j \le 10^9 + 6。可以证明,在本问题的限制下,这样的 RjR_j 总是存在且唯一确定。

2
5 2
200000
1 400000 300000
2 500000 200000
1 800000 100000
4 200000 400000
1 5
3 5
4 2
300000
1 100000 100000
2 300000 400000
3 500000 600000
1 2
2 4
Case #1: 136000001 556640004
Case #2: 710000005 849000006

提示

对于样例 #1,第一个查询:事件 11 和 55 同时发生的概率为(事件 11 发生的概率)×\times(在事件 11 发生的条件下事件 55 发生的概率)。事件 11 发生的概率为 0.20.2。已知事件 11 发生,事件 44 发生的概率为 0.80.8。因此,在事件 11 发生的条件下事件 55 发生的概率为 0.2×0.8+0.4×0.2=0.240.2 \times 0.8 + 0.4 \times 0.2 = 0.24(事件 44 发生时事件 55 发生的概率加上事件 44 不发生时事件 55 发生的概率)。事件 11 和 55 同时发生的概率为 0.2×0.24=0.0480.2 \times 0.24 = 0.048。答案 0.0480.048 可化为分数 6125\frac{6}{125},可以验证 136000001136000001 满足输出部分所述的条件:136000001×125≡6(mod109+7)136000001 \times 125 \equiv 6 \pmod{10^9 + 7},且唯一确定。第二个查询:事件 55 和 33 同时发生的概率为 0.103520.10352。

对于样例 #2,第一个查询:事件 11 和 22 同时发生的概率为(事件 11 发生的概率)×\times(在事件 11 发生的条件下事件 22 发生的概率)。由于 11 是事件 22 的父事件,给定事件 11 发生时事件 22 发生的概率即为 A2=0.1A_2 = 0.1。因此,事件 11 和 22 同时发生的概率为 0.3×0.1=0.030.3 \times 0.1 = 0.03。输出为 3×10−2 mod (109+7)=7100000053 \times 10^{-2} \bmod (10^9 + 7) = 710000005。第二个查询:事件 22 和 44 同时发生的概率为 0.0570.057。

限制条件

1≤T≤1001 \le T \le 100。

对于每个 ii 从 22 到 NN,1≤Pi<i1 \le P_i < i。

对于所有 jj,1≤uj,vj≤N1 \le u_j, v_j \le N 且 uj≠vju_j \ne v_j。

对于每个 ii 从 22 到 NN,0≤Ai≤1060 \le A_i \le 10^6。

对于每个 ii 从 22 到 NN,0≤Bi≤1060 \le B_i \le 10^6。

0≤K≤1060 \le K \le 10^6。

测试集 1

2≤N≤10002 \le N \le 1000。

1≤Q≤10001 \le Q \le 1000。

测试集 2

最多 55 个测试用例满足:

2≤N≤2×1052 \le N \le 2 \times 10^5。

1≤Q≤2×1051 \le Q \le 2 \times 10^5。

其余测试用例满足:

2≤N≤10002 \le N \le 1000。

1≤Q≤10001 \le Q \le 1000。

翻译由 DeepSeek V4 Pro 完成