#P14536. [OII 2025] 路灯收集 / Raccogli i lampioni
[OII 2025] 路灯收集 / Raccogli i lampioni
Description
乌迪内市有 个路口,被 条双向道路所连接。在路口 ,有一盏高度为 的路灯。第 条道路连接编号为 和 的路口,长度为 。
要借用一盏路灯 ,必须将其放倒在一条连接了路口 的道路上,前提是这条路上要有足够的空间:也就是说,放倒在第 条道路上的路灯长度之和不能超过 。
请帮助工作人员确定能借用的最大路灯数量。
- 两个路口之间可能有多于一条道路。此外,不能保证每个路口都可以通过道路与其他所有路口相连。
实现细节
附件中包含一个实现示例 benilluminato.cpp。
你需要实现如下函数:
int illumina(int N, int M, vector<int> H, vector<int> A, vector<int> B, vector<int> L);
- 整数 :路口的数量。
- 整数 :道路的数量。
- 数组 :下标从 到 ,包含每个路口上路灯的高度。
- 数组 和 :下标从 到 ,描述了道路,其中第 条道路连接路口 和 ,长度为 米。
- 该函数需要返回能借用的最大路灯数量。
- 对于每个测试点,该函数都只会被调用一次。
Input Format
评测程序的输入格式如下:
- 第 行:两个整数 和 。
- 第 行: 个整数 。
- 第 行():三个整数 。
Output Format
评测程序的输出格式如下:
输出一行一个整数,表示函数 illumina 的返回值。
4 3
4 2 3 3
0 1 4
0 2 6
0 3 8
4
8 10
3 2 3 2 4 6 5 9
0 1 4
1 2 1
2 3 3
3 4 1
0 4 8
2 5 8
3 5 7
1 6 4
5 7 3
6 7 10
7
2 2
5 6
0 1 5
0 1 9
2
Hint
【样例解释】
在样例 1 中,如下的方案可以最大化借用的路灯数量(可以借用所有路灯):
- 将路灯 和路灯 放倒在道路 上;
- 将路灯 放倒在道路 上;
- 将路灯 放倒在道路 上。
在样例 2 中,如下的方案可以最大化借用的路灯数量(不能借用所有的 盏路灯,但是可以借用 盏):
- 将路灯 和路灯 放倒在道路 上;
- 将路灯 放倒在道路 上;
- 将路灯 放倒在道路 上;
- 将路灯 放倒在道路 上;
- 将路灯 放倒在道路 上;
- 将路灯 放倒在道路 上。
在样例 3 中,如下的方案可以最大化借用的路灯数量(可以借用所有路灯):
- 将路灯 放倒在道路 上;
- 将路灯 放倒在道路 上。
【数据范围】
- ;
- ;
- 且 ;
- 。
【子任务】
| 子任务编号 | 分值 | 约束条件 |
|---|---|---|
| 样例 | ||
| ,, 且 | ||
| ,, | ||
| 且 | ||
| 无额外限制 | ||
京公网安备 11011102002149号