#L5464. 「eJOI2025」网格
「eJOI2025」网格
#5464. 「eJOI2025」网格
题目描述
题目译自 Grid
Simona 梦想着拥有数不尽的财富。她受邀参加一个赢取大奖的游戏。
Simona 将被放置在一个大小为 、填满正整数的网格 的单元格 处。她必须到达单元格 。为此,她可以从当前单元格 重复移动到任何其他单元格 或 ,其中 。对于每一次这样的移动,Simona 将获得 的奖励金币,其中 是她的新坐标, 是在旅程开始前固定的一个常数成本。请注意,如果表达式 的结果为负数,Simona 将会失去金币。另请注意,游戏结束时金币数量可能为负。
请帮助 Simona 确定她能以最多的金币数量完成游戏。
请注意,如果 ,则 ;否则 。
实现细节
您必须实现函数 max_profit:
long long max_profit(int N, int M, int C,
std::vector<std::vector<int>> A)
- :网格的尺寸;
- :测试点的固定成本常数;
- :一个大小为 的整数向量的向量,代表二维网格(按行然后按列索引)。
对于每个测试点,该函数将被调用一次,并且必须返回 Simona 能以最多的金币数量结束游戏。
输入格式
第一行包含三个整数: 的值。
第 到第 行:每行包含 个整数—— 的值。
输出格式
第一行包含一个整数:该调用的返回值。
样例 1
考虑以下调用:
max_profit(5, 6, 4, {{20, 24, 31, 33, 36, 40},
{25, 23, 25, 31, 32, 39},
{31, 26, 21, 24, 31, 35},
{32, 28, 25, 21, 26, 28},
{36, 35, 28, 24, 21, 27}})
在这种情况下,最优路径是 $(0,0) \xrightarrow{7} (0, 2) \xrightarrow{2} (1, 2) \xrightarrow{10} (1,5) \xrightarrow{8}(4, 5)$,沿着这条路径获得的金币数量是 。您的函数必须返回 。
样例 2
max_profit(2, 2, 100, {{1, 2}, {3, 4}})
在这种情况下,您的函数必须返回:。请注意,答案可能是负值。
数据范围与提示
对于所有输入数据,满足:
- 对于 和 ,有
详细子任务附加限制及分值如下表所示。
| 子任务 | 分值 | 子任务依赖 | 附加限制 |
|---|---|---|---|
| 0 | - | 样例。 | |
| 1 | , | ||
| 2 | , | ||
| 3 | , | ||
| 4 | 1 | , | |
| 5 | 1-4 | ||
| 6 | 1 | ||
| 7 | 2 | ||
| 8 | 3 | ||
| 9 | 0-1, 4, 6 | ||
| 10 | 0-9 | - |