QOJ.ac

QOJ

حد الوقت: 4.0 s حد الذاكرة: 1024 MB مجموع النقاط: 100 قابلة للهجوم ✓

#15481. 深入探索泡泡乌托邦

الإحصائيات

在神秘的水下国度 Bubbletopia 中,城市建在由闪烁通道相连的巨大气泡中。这些气泡编号为 $1$ 到 $N$,形成了一个以大气泡(Grand Bubble)$1$ 为根的宏伟树形结构。Bubbletopia 的居民和谐地生活在一起,每个气泡 $i$ 庇护着 $P_i$ 名居民。

气泡之间由 $N - 1$ 条通道连接,允许人们从任意一个气泡到达另一个气泡。居民们通过这些通道旅行,探索他们世界的深处。

某天,皇室发现王位继承人失踪了!最后的目击记录显示,继承人就在以气泡 $X$ 为根的子树深处的某个地方。以气泡 $X$ 为根的子树包括气泡 $X$ 以及从 $X$ 出发远离大气泡 $1$ 所能到达的所有气泡。时间紧迫,皇家卫队必须迅速行动。

作为安全主管,你被分配了 $K$ 支精英搜救队。每支队伍都可以从气泡 $X$ 出发开始任务,沿着远离大气泡的任何路径移动。每次任务都包括移动通过一系列气泡,沿途检查每个气泡中的居民以寻找继承人。

你的任务是制定一种搜救策略,利用这 $K$ 支搜救队最大化找到继承人的概率。在搜救过程中,继承人会一直留在同一个气泡中。

由于继承人可能躲在任何地方,他们是该子树内任何一名居民的概率是均等的。因此,继承人在某个特定气泡中的概率与该气泡中的居民人数成正比。

请注意,多次访问同一个气泡并不会增加找到继承人的几率,因为在搜救期间他们不会在气泡之间移动。

共有 $Q$ 个这样的场景。每个场景都是独立的,对于每个场景,你会得到搜救的起点气泡 $X$ 和可用的搜救队数量 $K$。你能计算出在每个场景中,使用最优搜救策略找到继承人的最高概率吗?

输入格式

第一行包含两个整数 $N$ 和 $Q$:气泡的数量和场景的数量($1 \le N, Q \le 3 \cdot 10^5$)。

第二行包含 $N$ 个整数 $P_1, P_2, \dots, P_N$:每个气泡中的居民人数($1 \le P_i \le 10^6$)。

接下来的 $N - 1$ 行,每行包含两个整数 $U$ 和 $V$:由通道连接的两个节点($1 \le U, V \le N, U \neq V$)。保证生成的图是一棵树:连通且不含环、自环或重边。

接下来的 $Q$ 行,每行包含两个整数 $X$ 和 $K$:搜救的起点气泡和可用的搜救队数量($1 \le X, K \le N$)。

输出格式

对于每个场景,输出一个介于 $0$ 和 $1$ 之间的实数,表示使用最优搜救路径找到继承人的最高概率。如果你的答案与标准答案的绝对误差或相对误差不超过 $10^{-9}$,则视为正确。

样例

输入样例 1

6 6
1 10 10 10 5 6
5 6
1 2
3 2
5 1
2 4
1 1
1 2
1 3
2 2
5 1
4 6

输出样例 1

0.5000000000
0.7619047619
1.0000000000
1.0000000000
1.0000000000
1.0000000000

说明

以下是样例的解释。

  • 在第一个场景中,可以将一支搜救队派往路径 $1 \to 2 \to 3$,在树中居住的 $42$ 人中总共搜寻 $21$ 人,使得找到继承人的概率等于 $50\%$。
  • 在第二个场景中,可以将一支搜救队派往路径 $1 \to 2 \to 3$,而第二支队伍派往路径 $1 \to 5 \to 6$,在树中居住的 $42$ 人中总共搜寻 $32$ 人,使得找到继承人的概率约为 $76\%$。
  • 在第三个场景中,使用 $3$ 支搜救队可以搜寻所有 $42$ 人。
  • 在第四个场景中,使用 $2$ 支搜救队可以搜寻所有 $30$ 人。
  • 在第五个场景中,使用提供的一支搜救队可以搜寻所有 $11$ 人。
  • 在第六个场景中,使用单支搜救队即可搜寻所有 $10$ 人,其余 $5$ 支搜救队无事可做。

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.