#L3540. 「JOI Open 2018」山体滑坡
「JOI Open 2018」山体滑坡
题目描述
译自 JOI Open 2018 T3 「崖崩れ / Collapse」
背景
在 JOI 国有 个城镇,它们坐落于一个幽深峡谷中。城镇按到海洋的距离的顺序分别编号为 。
I 先生是 JOI 国科学委员会的主席,他准备维护城镇之间双向连接的电缆。目前 JOI 国没有电缆。
电缆建设计划
I 先生有一个 天的电缆建设计划。第 天()的计划用三个整数 表示,分别表示:
如果 ,他们会架设一段连接城镇 与城镇 的电缆。保证在第 天开始的时候城镇 与城镇 之间没有电缆。
如果 ,他们会拆除一段连接城镇 与城镇 的电缆。保证在第 天开始的时候城镇 与城镇 之间有电缆。
山体滑坡问题
JOI 国经常发生山体滑坡。如果在城镇 与 ()之间发生山体滑坡,则连接编号至多为 与编号至少为 城镇的电缆就不可用了。
在 JOI 国,每当山体滑坡发生,他们就会选择一些城镇建设基站。基站应满足对于任意城镇,都可以通过一些可用的电缆与基站连通。
查询任务
I 先生在建设阶段就在考虑山体滑坡发生时应建设多少基站。他有 个问题:第 个问题用两个整数 表示,表示他想知道在 天结束时,如果在城镇 和 之间发生山体滑坡,至少应该建立多少基站。
你作为 I 先生的助理,负责写一个程序去回答 I 先生的问题。
实现细节
函数定义
你需要实现如下函数 simulateCollapse 以回答 个问题。
std::vector<int> simulateCollapse(
int N,
std::vector<int> T,
std::vector<int> X,
std::vector<int> Y,
std::vector<int> W,
std::vector<int> P
)
参数说明
-
N:JOI 国的城镇个数。
-
T, X, Y:长度为 的数组。对于 , 表示在第 天的建设计划。保证 等于 或 ,并且保证 ,,。
-
W, P:长度为 的数组。对于 , 表示第 个询问,保证 ,。
返回值
这个函数应当返回一个长度为 的数组 。对于 , 应该是对第 个问题的回答。
技术说明
C++ 的提交应引入库 collapse.h 来完成,目前不支持对 Java 和 Pascal 语言提交的测评。
输入格式
样例交互器按如下格式读取输入:
第一行三个整数
接下来 行,每行三个整数
接下来 行,每行两个整数
输出格式
样例交互器按如下方式输出 simulateCollapse 函数的返回值:
第 行输出
5 8 2
0 0 1
0 1 3
0 2 4
0 4 0
1 1 3
0 0 3
0 1 2
0 4 3
3 1
7 3
3
2
样例
考虑有 个城镇的情况。接下来用 代表连接城镇 和城镇 的电缆。
-
假设当有四根电缆 时,在城镇 和 之间发生了滑坡。电缆 和 不可用了,因此可用的电缆是 和 。你需要在城镇 建立基站。最少要建立基站数为 。
-
假设当有六根电缆 和 时,在城镇 和 之间发生了滑坡。电缆 和 不可用了,因此可用的电缆是 和 。你需要在城镇 和 建立基站。最少要建立基站数为 。
数据规模与约定