QOJ.ac

QOJ

実行時間制限: 1.5 s メモリ制限: 1024 MB 満点: 100

#6658. 地下城

統計

哲秀和英姬在玩游戏时穿过了一个地牢。地牢是一个 $N \times N$ 的网格状结构。网格的行从上到下编号为 $0$ 到 $N-1$,列从左到右编号为 $0$ 到 $N-1$。位于第 $i$ 行、第 $j$ 列的格子称为格子 $(i, j)$。

穿过地牢的规则如下:

  • 哲秀从地牢左上角的格子出发,移动到右下角的格子。移动时,哲秀只能从当前格子移动到右侧或下方相邻的格子。
  • 英姬从地牢右上角的格子出发,移动到左下角的格子。移动时,英姬只能从当前格子移动到左侧或下方相邻的格子。

地牢的每个格子中都有一个物品。每个物品的价值为正整数、0 或负整数,格子 $(i, j)$ 中物品的价值为 $V[i][j]$。哲秀和英姬已经知道了所有格子中物品的价值。穿过地牢后,哲秀和英姬会收集他们经过的所有格子中的物品。请注意,即使两人都经过了同一个格子,该格子中的物品也只会被收集一次。

请编写一个程序,计算哲秀和英姬所收集物品价值之和的最大可能值。

实现细节

你需要实现以下函数:

int max_item_sum(vector<vector<int> > V)
  • $V$:一个大小为 $N \times N$ 的二维整数数组。对于所有 $i, j$ ($0 \le i, j \le N-1$),$V[i][j]$ 是地牢格子 $(i, j)$ 中物品的价值。
  • 该函数应返回哲秀和英姬可以收集的物品价值之和的最大可能值。

提交的源代码中不得执行任何输入输出函数。

数据范围

  • $2 \le N \le 1000$
  • 对于所有 $i, j$,$-100\,000 \le V[i][j] \le 100\,000$ ($0 \le i, j \le N-1$)

子任务

  1. (11分) $N \le 5$
  2. (44分) $N \le 300$
  3. (15分) 对于所有 $i, j$,$V[i][j] \ge 0$ ($0 \le i, j \le N-1$)
  4. (30分) 无额外限制。

样例

样例 1

输入: $N = 5, V = [[-1, -1, -1, -1, -1], [-1, -1, 1, -1, -1], [-1, -1, -1, -1, -1], [-1, -1, 1, -1, -1], [-1, -1, -1, -1, -1]]$

调用:

max_item_sum([[-1, -1, -1, -1, -1], [-1, -1, 1, -1, -1], [-1, -1, -1, -1, -1], [-1, -1, 1, -1, -1], [-1, -1, -1, -1, -1]])

输出: -9

样例 2

输入: $N = 5, V = [[1, 2, 3, 4, 5], [2, 3, 4, 5, 1], [3, 4, 5, 1, 2], [4, 5, 1, 2, 3], [5, 1, 2, 3, 4]]$

调用:

max_item_sum([[1, 2, 3, 4, 5], [2, 3, 4, 5, 1], [3, 4, 5, 1, 2], [4, 5, 1, 2, 3], [5, 1, 2, 3, 4]])

输出: 60

样例 3

输入: $N = 5, V = [[1, 1, -1, -1, 1], [-1, 1, -1, 1, 1], [1, 1, 1, 1, -1], [1, -1, -1, 1, -1], [1, -1, -1, 1, 1]]$

调用:

max_item_sum([[1, 1, -1, -1, 1], [-1, 1, -1, 1, 1], [1, 1, 1, 1, -1], [1, -1, -1, 1, -1], [1, -1, -1, 1, 1]])

输出: 15

Sample grader

Sample grader 接收以下格式的输入:

  • 第 1 行:$N$
  • 第 $2 + i$ 行 ($0 \le i \le N-1$):$V[i][0] \ V[i][1] \ \dots \ V[i][N-1]$

Sample grader 输出:

  • 第 1 行:函数 max_item_sum 返回的值

请注意,Sample grader 可能与实际评测时使用的 grader 不同。

Figure 1. 样例 1 的地牢网格

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.