luogu#P7591. 狩猎(2021 CoE-II D)

    ID: 11592 远端评测题 2000ms 256MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>2021Special JudgeO2优化Dijkstra动态规划dp期望

狩猎(2021 CoE-II D)

题目描述

母狮 Dina\text{Dina} 的领地里有固定的 nn 个狩猎点,第 ii 个狩猎点有 pip_i 的概率可以捕捉到猎物,Dina\text{Dina} 的巢穴和 nn 个狩猎点相互之间存在若干条直接连接的双向道路。

每天早晨,Dina\text{Dina} 从她的巢穴出发,随机选择一个与巢穴相邻的狩猎点 uu 进行一次捕猎,如果她未捕捉到猎物,她会随机选择一个与当前狩猎点 uu 相邻的其他狩猎点 vv 继续进行一次捕猎,如果在狩猎点 vv 仍未捕捉到猎物,Dina\text{Dina} 会按照前述过程继续捕猎。如果在某个狩猎点捕捉到了猎物,Dina\text{Dina} 会立即返回巢穴,结束捕猎。若当前狩猎点 uu 与巢穴相邻,而与其他狩猎点不相邻,Dina\text{Dina} 也会选择立即返回巢穴,然后从与巢穴相邻的狩猎点中,随机选择一个狩猎点继续上述捕猎过程。Dina\text{Dina} 在每个狩猎点只进行一次捕猎,然后离开,但后续可能还会回到该狩猎点再次进行捕猎。在本题环境下,如果地点 uu 和地点 vv 之间有一条直接连接的双向道路,称地点 uu 和地点 vv 相邻,否则称地点 uu 和地点 vv 不相邻

令巢穴的编号为 00nn 个狩猎点的编号从 11nnDina\text{Dina} 从编号为 uu 的地点到达另外一个编号为 vv 的地点需要消耗 hu,vh_{u,v} 体力和 tu,vt_{u,v} 时间。在第 ii 个狩猎点每进行一次捕猎,Dina\text{Dina} 会消耗 hih_i 体力和 tit_i 时间。每当 Dina\text{Dina} 到达某个狩猎点并进行一次捕猎后,她会评估自己的体力消耗和时间花费,如果体力消耗已经达到(或超过)限值 HH,她就选择立即返回巢穴结束捕猎。如果时间花费已经达到(或超过)限值 TT,她也会选择立即返回巢穴结束捕猎。Dina\text{Dina} 只有在到达狩猎点并进行一次捕猎后才进行评估,在任何其他时刻均不会进行评估。如果当前位于巢穴,她会在到达巢穴时就进行评估,因为巢穴并无猎物可供捕捉。

需要注意,Dina\text{Dina} 在沿着两个地点间的双向道路移动的过程中并不会评估,因此可能会出现以下情形:到达某个狩猎点且尚未进行捕猎时,Dina\text{Dina} 已消耗的体力或者已花费的时间已经超过限值。在这种情形下,Dina\text{Dina} 仍然会进行一次捕猎,之后再进行评估。

Dina\text{Dina} 因为捕猎成功、体力消耗或时间花费达到(或超过)相应限值、当前狩猎点与其他狩猎点不相邻而返回巢穴时,她总会选择一条具有最少时间花费的路径。如果存在多条具有最少时间花费的路径返回巢穴,她会选择其中体力消耗最少的路径。Dina\text{Dina} 在返回巢穴的过程中不会进行捕猎。

Dina\text{Dina} 从巢穴出发,因满足以下三个条件之一:

  • 捕猎成功
  • 体力消耗达到(或超过)限值 HH
  • 时间花费达到(或超过)限值 TT

返回到达巢穴并结束捕猎的过程称为一次狩猎。给出巢穴和狩猎点之间的道路、每条道路所需要消耗的体力和花费的时间、每个狩猎点进行一次捕猎能够捕获猎物的概率以及所需消耗的体力、花费的时间,试确定 Dina\text{Dina} 完成一次狩猎所消耗体力和花费时间的平均值。

输入格式

输入的第一行包含一个整数 nn,表示狩猎点的数量。

接下来 nn 行,每行包含三个数值:整数 hih_i,整数 tit_i,实数 pip_i,分别表示在第 ii 个狩猎点进行一次捕猎所消耗的体力、花费的时间、能够捕获猎物的概率。

接下来是一个整数 mm,表示连接各个地点的双向道路的数量。接着 mm 行,每行包含四个整数 uuvvhu,vh_{u,v}tu,vt_{u,v},表示从编号为 uu0in0 \le i \le n)的地点到另外一个编号为 vv0in0 \le i \le nuvu \ne v)的地点之间存在一条直接连通的道路,需要消耗 hu,vh_{u,v} 体力和花费 tu,vt_{u,v} 时间。由于是双向道路,从地点 uu 到达地点 vv 与从地点 vv 到达地点 uu 所消耗体力和花费时间相同。

最后是两个整数 HHTT,表示体力和时间的限值。

输出格式

输出一行,包含两个实数,精确到小数点后一位,分别表示 Dina\text{Dina} 完成一次狩猎所消耗体力和花费时间的平均值。如果你的输出和参考输出绝对误差小于10110^{-1},均认为正确。

1
1 2 1.00
1
0 1 2 3
10 20
5.0 8.0
3
1 2 1.00
2 3 0.50
3 4 0.70
2
0 1 2 3
0 2 4 5
10 20
7.5 10.5

提示

子任务测试采用捆绑方式计分。

样例说明

输入 #1

该输入只包含一个狩猎点,从巢穴到狩猎点 11 之间的道路需要消耗 22 体力和 33 时间,体力的限值为 1010,时间的限值为 2020,在狩猎点 11 进行一次捕猎需要消耗 11 体力和 22 时间,在狩猎点 11 捕获猎物的概率为 1.001.00,即一定会捕捉到猎物。容易知道,进行一次狩猎所消耗的体力和花费时间的平均值分别为 5.0=(2+1+2)×100%5.0=(2+1+2) \times 100\%8.0=(3+2+3)×100%8.0=(3+2+3) \times 100\%

输入 #2

相较于第一组输入,新增了两个狩猎点,但只有狩猎点 11 和狩猎点 22 与巢穴有直接道路相连。三个狩猎点之间无直接道路相连,但狩猎点 11 可以间接通过巢穴与狩猎点 22 连通。从巢穴到狩猎点 22 的道路需要消耗 44 体力和 55 时间,在狩猎点 22 进行一次捕猎需要消耗 22 体力和 33 时间。在狩猎点 11 捕获猎物的概率为 1.001.00,即一定会捕捉到猎物,因此 Dina\text{Dina} 会立即返回巢穴并结束狩猎。在狩猎点 22 捕获猎物的概率为 0.500.50,即有 50%50\% 的概率会捕捉到猎物,但由于狩猎点 22 没有其他狩猎点与之直接连通,因此不管在狩猎点 22 是否捕获到猎物,Dina\text{Dina} 都会选择立即返回巢穴,在返回巢穴时,已经消耗 1010 体力,根据题意,不管 Dina\text{Dina} 是否已经捕捉到了猎物,她都会结束狩猎。由于是随机选择,故在巢穴时选择狩猎点 1122 进行狩猎的概率均为 50%50\%,根据计算可知,进行一次狩猎所消耗的体力和花费时间的平均值分别为 7.5=(2+1+2)×50%+(4+2+4)×50%7.5=(2+1+2) \times 50\%+(4+2+4) \times 50\%10.5=(3+2+3)×50%+(5+3+5)×50%10.5=(3+2+3) \times 50\%+(5+3+5) \times 50\%


数据范围

  • Subtask 11n=1n=11010 分。
  • Subtask 221n201 \le n \le 20,每个狩猎点和其他狩猎点均无直接道路相连,2020 分。
  • Subtask 33:无特殊限制,7070 分。

对于 100%100\% 的数据,1n2001 \le n \le 2001hi101 \le h_i \le 101ti101 \le t_i \le 100pi10 \le p_i \le 11mmin(n(n+1)/21 \le m \le \text{min}(n (n+1) / 220002000),1hu,v201 \le h_{u,v} \le 201tu,v201 \le t_{u,v} \le 201H2001 \le H \le 2001T2001 \le T \le 200


约定

  • 地点 uu 和地点 vv 之间至多有一条直接连接的双向道路,两个地点之间的直连双向道路不会重复给出。
  • 忽略 Dina\text{Dina} 进行评估所需要的时间。
  • 在输入中,表示概率 pip_i 的数值是一个具有两位小数的实数。