#P14000. [eJOI 2025] Grid

    ID: 15788 远端评测题 500ms 256MiB 尝试: 0 已通过: 0 显示难度普及 上传者: 标签>动态规划 DP2025交互题eJOI(欧洲)

[eJOI 2025] Grid

题目描述

Simona 梦想获得无数财富。她得到一个玩游戏赢取大奖的机会。

Simona 将从一个 N×MN \times M 的网格 AA 的格子 (0,0)(0, 0) 出发,这个网格填充了正整数。她必须到达格子 (N−1,M−1)(N-1, M-1)。为此,她可以重复进行如下移动:从当前位置 (x,y)(x, y) 移动到任意 (x+d,y)(x + d, y) 或 (x,y+d)(x, y + d),其中 d>0d > 0。每次移动时,她将获得奖励硬币 ∣Ax,y−Ax′,y′∣−C|A_{x,y} - A_{x',y'}| - C,其中 (x′,y′)(x', y') 是她的新位置,CC 是游戏开始前固定的常数代价。注意,如果表达式 ∣Ax,y−Ax′,y′∣−C|A_{x,y} - A_{x',y'}| - C 的结果为负数,Simona 将失去硬币。注意游戏结束时她可能拥有负数硬币。

请帮助 Simona 确定她最多可以获得多少硬币。

其中,∣a∣=a|a| = a 若 a≥0a \geq 0,否则 ∣a∣=−a|a| = -a。

实现细节

你需要实现函数 max_profit:

long long max_profit(int N, int M, int C, std::vector<std::vector<int>> A)
  • N,MN, M:网格的行数和列数;
  • CC:固定代价常数;
  • AA:大小为 N×MN \times M 的二维数组,表示网格(先行后列索引)。

该函数在每个测试中被调用一次,返回 Simona 在最优策略下结束游戏时最多能获得的硬币数。

输入格式

输入格式如下:

  • 第 1 行:三个整数——N,M,CN, M, C。
  • 第 22 行到第 (N+1)(N+1) 行:每行 MM 个整数——Ai,jA_{i,j}。

输出格式

输出格式如下:

  • 第 1 行:一个整数——函数调用的返回值。
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
27
2 2 100
1 2
3 4
-197

提示

示例

考虑如下调用:

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)$,她总共能获得 7+2+10+8=277 + 2 + 10 + 8 = 27 枚硬币。函数必须返回 2727。

max_profit(2, 2, 100, {{1, 2}, {3, 4}})

在这里,函数必须返回 −197-197。注意答案可能为负数。

约束条件

  • 1≤N,M1 \leq N, M
  • N⋅M≤5×105N \cdot M \leq 5\times10^5
  • 1≤Ai,j≤1061 \leq A_{i,j} \leq 10^6,对所有 0≤i<N,0≤j<M0 \leq i < N, 0 \leq j < M
  • 0≤C≤1060 \leq C \leq 10^6

子任务

子任务 分值 依赖子任务 附加约束
0 00 - 样例
1 99 N=1,M≤200N = 1, M \leq 200
2 55 N=1,Ai,j≤Ai,j+1N = 1, A_{i,j} \leq A_{i,j+1}
3 88 N=1,C=0N = 1, C = 0
4 1010 11 N=1,M≤5×104N = 1, M \leq 5\times 10^4
5 77 1−41-4 N=1N = 1
6 1515 11 N,M≤200N, M \leq 200
7 99 22 Ai,j≤Ai+1,j,Ai,j+1A_{i,j} \leq A_{i+1,j}, A_{i,j+1}
8 1212 33 C=0C = 0
9 0−1,4,60-1, 4, 6 N⋅M≤5×104N \cdot M \leq 5\times 10^4
10 1313 0−90-9 -

翻译由 ChatGPT-5 完成。