题目描述
在 2992 年,机器人已经取代了人类的大部分工作,大家都有着大量的空闲时间。因此你和家人决定利用这些时间来一场星际旅行。
有
在不同行星之间移动是非常耗时的,所以除了车票钱,餐费支出也不可忽视。列车上免费提供不限量的食物,也就是在列车上吃饭不花钱:如果你决定乘坐第
你和家人在旅途中总共需要吃
现在是
实现细节
请在程序开头引入库 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);
:行星数量。 :星际列车路线数量。 :需要用餐的次数。 :一个长度为 的数组。 表示在行星 每次用餐的花费。 :五个长度为 的数组。 描述了第 条列车路线。 :两个长度为 的数组。 描述了第 顿饭的用餐时间。- 你需要返回从行星
到达行星 的最小花费。如果行星 不可达,返回 。
样例 1
考虑如下调用:
solve(3, 3, 1, {20, 30, 40}, {0, 1, 0}, {1, 2, 2},
{1, 20, 18}, {15, 30, 40}, {10, 5, 40}, {16}, {19});
一种可行的方案是依次乘坐第
时刻 | 你的行动 | 花费 |
---|---|---|
1 | 乘坐第 |
|
15 | 到达 |
|
16 | 在 |
|
20 | 乘坐第 |
|
30 | 到达 |
一种更优的方案是乘坐第
时刻 | 你的行动 | 花费 |
---|---|---|
18 | 乘坐第 |
|
19 | 在第 |
|
40 | 到达 |
在这种方案中,在时刻
因此函数应该返回
样例 2
考虑如下调用:
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});
最优解是:乘坐第
因此函数应该返回
约束条件
,
子任务
详细子任务附加限制及分值如下表所示。
子任务编号 | 附加限制 | 分值 |
---|---|---|
1 | ||
2 | ||
3 | 每顿饭的用餐时间两两不交。形式化地,对于任何时刻 |
|
4 | 没有额外的约束条件 |
评测程序示例
评测程序示例读取如下格式的输入:
- 第
行:
对于接下来的
- 第
行: - 第
行: - 第
行: - 第
行:
评测程序示例按照如下格式打印你的答案:
- 对于每组测试数据:
- 第
行:函数solve
的返回值
- 第