QOJ.ac

QOJ

时间限制: 3 s 内存限制: 128 MB 总分: 100 难度: [显示]

#306. 蚁群

统计

蚂蚁正在废弃的蚁丘中寻找食物。蚁丘有 $n$ 个房间和 $n-1$ 条连接它们的走廊。我们知道,任意两个房间之间都存在唯一的路径。换句话说,房间和走廊构成了一棵树。

每个房间都有一个入口,且只有一个走廊通向(或离开)它。在每个入口处,分别有 $g$ 组蚂蚁,数量分别为 $m_1, m_2, \dots, m_g$。这些蚁群将依次进入蚁丘,每一组在前一组完全进入后才会进入。在蚁丘内部,蚂蚁的探索方式如下:

  • 当进入一个有 $d$ 条尚未被该蚁群探索过的走廊的房间时,蚁群会分裂成 $d$ 个等大的群体。每个新创建的群体会沿着其中一条走廊前进。如果 $d=0$,则该群体离开蚁丘。
  • 如果蚂蚁无法平分,那么较强的蚂蚁会吃掉较弱的蚂蚁,直到可以进行完美平分。注意,这种平分总是可能的,因为蚂蚁数量最终会降至零。没有什么能阻止蚂蚁进行平分——特别是,蚂蚁可以吃掉自己,如果群体数量小于 $d$,最后剩下的一只蚂蚁也会这样做。

下图展示了 $m$ 只蚂蚁进入一个有三条待探索走廊的房间时,分裂成三个(等大)群体,每组 $\lfloor m/3 \rfloor$ 只蚂蚁的情况。

一只饥饿的食蚁兽挖开了其中一条走廊,现在可以吃掉所有经过该走廊的蚂蚁。然而,就像蚂蚁一样,食蚁兽对数字非常挑剔。它只会在经过的群体恰好由 $k$ 只蚂蚁组成时才将其吞食。我们想知道食蚁兽总共会吃掉多少只蚂蚁。

输入格式

第一行包含三个整数 $n, g, k$ ($2 \le n, g \le 1\,000\,000$, $1 \le k \le 10^9$),用空格分隔。这些数字分别指定了房间数量、蚁群数量以及食蚁兽一次吞食的蚂蚁数量。房间编号从 $1$ 到 $n$。

第二行包含 $g$ 个整数 $m_1, m_2, \dots, m_g$ ($1 \le m_i \le 10^9$),用空格分隔,其中 $m_i$ 表示第 $i$ 组蚂蚁在每个蚁丘入口处的数量。接下来的 $n-1$ 行描述了蚁丘内的走廊;第 $i$ 行包含两个整数 $a_i, b_i$ ($1 \le a_i, b_i \le n$),用空格分隔,表示房间 $a_i$ 和 $b_i$ 之间由一条走廊连接。食蚁兽挖开了输入中出现的第一个走廊。

在总分 50% 的测试中,进入蚁丘的蚂蚁总组数不超过 $1\,000\,000$。此外,在占总分 20% 的子任务中,额外满足 $n, g \le 100$。

输出格式

程序应输出一行,包含一个整数:食蚁兽吃掉的蚂蚁总数。

样例

样例输入 1

7 5 3
3 4 1 9 11
1 2
1 4
4 3
4 5
4 6
6 7

样例输出 1

21

说明

在 2, 3, 5, 7 号房间旁,各有 5 组蚂蚁。食蚁兽会吃掉从 2 号房间开始探索的第一组中的 3 只蚂蚁,以及从 3, 5 或 7 号房间开始探索的第四组和第五组中各 3 只蚂蚁。

样例测试

  • 1ocen: $n = 20, g = 20, k = 5$,房间以形成一条长隧道的方式连接。食蚁兽挖开了其中一端的走廊。蚁群大小为 $1, \dots, 20$。
  • 2ocen: $n = 2^{19} + 1, g = 20, k = 1$,蚁丘结构如下:1 号房间与 $n$ 号房间相连(食蚁兽挖开了连接这两个房间的走廊),且第 $i$ 个房间(对于 $i = 2, 3, \dots, n-1$)与第 $\lfloor i/2 \rfloor$ 号房间相连。进入蚁丘的蚁群大小为 2 的连续幂次:$2^0, 2^1, \dots, 2^{19}$。

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.