#P10538. [APIO2024] 星际列车
[APIO2024] 星际列车
题目背景
请勿使用 C++14(GCC9) 提交
在 2992 年,机器人已经取代了人类的大部分工作,大家都有着大量的空闲时间。因此你和家人决定利用这些时间来一场星际旅行。
有 个人类已经可以到达的行星,编号为 到 ,以及 种不同的星际列车路线。第 种列车路线 () 在时间 从行星 出发,在时间 到达行星 ,票价为 。在行星之间,这些星际列车是仅有的交通方式。对于你搭乘的一列星际列车,你只能在它的终点站下车,并且你搭乘的下一趟列车的起点站必须和这趟列车的终点站相同(这里认为换乘不耗时)。形式化地,你可以依次乘坐第 次列车,当且仅当对任意 都有 ,。
在不同行星之间移动是非常耗时的,所以除了车票钱,餐费支出也不可忽视。列车上免费提供不限量的食物,也就是在列车上吃饭不花钱:如果你决定乘坐第 i 种星际列车,则在任何 到 之间的时刻(包括端点)你都可以免费吃任意多顿饭。但如果你决定在行星 吃饭,每顿饭都需要 元。
你和家人在旅途中总共需要吃 顿饭,第 顿饭可以在 到 (包括端点)的任何时刻吃,吃饭不耗费时间。吃饭没有顺序要求,例如允许在吃完第 顿饭后再吃第 顿饭(见样例 )。
现在是 时刻,你和家人正在 号行星上。你需要求出到达 号行星的最小花费,花费定义为车票价格和餐费之和。如果无法到达 号行星,最小花费定义为 。
题目描述
你无需在程序开头引入库 train.h
。
你只需要实现以下函数:
long long solve(int N, int M, int W, std::vector<int> T,
std::vector<int> X, std::vector<int> Y,
std::vector<int> A, std::vector<int> B, std::vector<int> C,
std::vector<int> L, std::vector<int> R);
- :行星数量。
- :星际列车路线数量。
- :需要用餐的次数。
- :一个长度为 的数组。 表示在行星 每次用餐的花费。
- :五个长为 的数组。 描述了第 条列车路线。
- :两个长为 的数组。 描述了第 顿饭的用餐时间。
- 你需要返回从行星 到达行星 的最小花费。如果行星 不可达,返回 。
- 每个测试点中,该函数恰好被调用一次。
输入格式
评测程序示例读取如下格式的输入:
- 第 行:
- 第 行:
- 第 行:
- 第 行:
输出格式
评测程序示例按照如下格式打印你的答案:
- 第 行:函数
solve
的返回值
3 3 1
20 30 40
0 1 1 15 10
1 2 20 30 5
0 2 18 40 40
16 19
40
3 5 6
30 38 33
0 2 12 16 38
1 0 48 50 6
0 1 26 28 23
0 2 6 7 94
1 2 49 54 50
32 36
14 14
42 45
37 40
2 5
4 5
197
提示
样例解释
对于样例一,考虑如下调用:
solve(3, 3, 1, {20, 30, 40}, {0, 1, 0}, {1, 2, 2},
{1, 20, 18}, {15, 30, 40}, {10, 5, 40}, {16}, {19});
一种可行的方案是依次乘坐第 次列车,花费为 ,具体流程如下:
时刻 | 你的行动 | 花费 |
---|---|---|
乘坐第 次列车从 号行星出发 | ||
到达 号行星 | ||
在 号行星吃第 顿饭 | ||
乘坐第 次列车从 号行星出发 | ||
到达 号行星 |
一种更优的方案是乘坐第 次列车,花费为 ,具体流程如下:
时刻 | 你的行动 | 花费 |
---|---|---|
乘坐第 次列车从 号行星出发 | ||
在第 次列车上吃第 顿饭 | ||
到达 号行星 |
在这种方案中,在时刻 在第 次列车上吃第 顿饭也是合法的。
因此函数应该返回 。
对于样例二,考虑如下调用:
solve(3, 5, 6, {30, 38, 33}, {0, 1, 0, 0, 1}, {2, 0, 1, 2, 2},
{12, 48, 26, 6, 49}, {16, 50, 28, 7, 54}, {38, 6, 23, 94, 50},
{32, 14, 42, 37, 2, 4}, {36, 14, 45, 40, 5, 5});
最优解是:乘坐第 次列车,车费为 。在第 次列车上免费吃第 顿饭。第 顿饭在行星 上吃 ,花费 。 第 顿饭在行星 上吃,花费 。总花费为 。
因此函数应该返回 。
数据范围
详细子任务附加限制及分值如下表所示。
子任务编号 | 附加限制 | 分值 |
---|---|---|
每顿饭的用餐时间两两不交。形式化地,对于任何时刻 满足 ,至多存在一个 使得 。 | ||
没有额外的约束条件 |