#P16890. [GKS 2022 #F] Water Container System
[GKS 2022 #F] Water Container System
题目描述
有一个由 个相同容器组成的水容器系统,该系统可以表示为一棵树,其中每个容器是一个顶点。容器之间由 条双向管道连接。相互连接的两个容器总是位于相邻的层级。形式化地说,如果两个容器 和 相连,则 。容器 位于最底层。每个容器恰好连接一个下方层级的容器(唯一的例外是容器 ,它下方没有连接),但可以连接零个或多个上方层级的容器。每个容器的最大容量为 升,初始时所有容器都是空的。假设管道的容量为 升,即它们不储存任何水,只允许水以任意方向通过。
下图是一个水容器系统的示例:
:::align{center}
:::
系统的第一层只有一个容器,即容器 (根)。容器 连接到位于上一层(第 层)的容器 和容器 。容器 还连接到位于第 层的容器 。
你会得到 个查询。每个查询包含一个整数 ,表示一个容器。对于每个查询,向容器 中额外添加 升水。
下图展示了不同条件下系统中水的流动情况:
:::align{center}
:::
- 第 步:向容器 添加 升水后,水向下流动,因为较低层的水容器还是空的。
- 第 步:再次向容器 添加 升水后,水向下流动,但由于容器 已完全填满,水在容器 和容器 之间均匀分配。
- 第 步:再次向容器 添加 升水后,容器 和容器 均完全填满。
- 第 步:再次向容器 添加 升水后,水被向上推至容器 ,容器 随即被完全填满。
如上例所示,同一层的容器将具有相同的水量。请找出在处理完所有查询后,被完全填满的容器数量。
输入格式
输入的第一行给出测试用例的数量 。接下来有 个测试用例。
每个测试用例的第一行包含两个整数 和 ,其中 是容器的数量, 是查询的数量。
接下来的 行,每行包含两个整数 和 (,),表示第 个水容器与第 个水容器相连。
接下来的 行,每行包含一个整数 (),表示应向哪个容器添加 升水。
输出格式
对于每个测试用例,输出一行,格式为 Case #x: y,其中 是测试用例编号(从 开始), 是在处理完所有查询后被完全填满的容器数量。
2
1 1
1
3 2
1 2
1 3
1
2
Case #1: 1
Case #2: 1
2
4 4
1 2
1 3
2 4
3
3
3
3
5 2
1 2
5 3
3 1
2 4
4
5
Case #1: 4
Case #2: 1
提示
在样例 #1 中,有 个水容器。向容器 添加 升水后,被完全填满的容器数量为 。
在样例 #2 中,有 个水容器。处理完所有查询后,被完全填满的容器数量为 。
:::align{center}
:::
- 向容器 添加 升水后:容器 被完全填满,其余容器为空。
- 向容器 添加 升水后:容器 被完全填满,容器 和 部分填满。
限制条件
。
。
保证给出的水容器系统是一棵树。
测试集 1
。
水容器系统是一棵完美二叉树。
测试集 2
。
翻译由 DeepSeek V4 Pro 完成