题目背景
翻译自 NordicOI 2024 C。
题目描述
Uolevi 在一个冻湖上,湖可以被分为 n×m 的网格,每个格子上都有一个金币。
每个格子有一个承受能力,即这个格子的冰上能承受的最大金币数量。
每一步,Uolevi 可以向上、下、左或右移动一格,但不能超出 n×m 的边界。如果 Uolevi 当前所在的格子上有金币,那么他可以把金币捡起来。
Uolevi 移动时,需要保证目标格子上的金币和自己身上的金币数量加起来不超过目标格子的承受能力。Uolevi 本身的重量可以忽略不计。
Uolevi 要收集湖上的金币,为此,他要从湖的边缘出发,到湖的边缘结束。他想知道他最多可以收集到几个金币。
输入格式
第一行输入两个整数 n,m。
接下来 n 行,每行 m 个数,每个位置的数 d 表示湖上对应位置格子的承受能力。
输出格式
输出 Uolevi 可以收集到的最大金币数量。
提示
样例解释:
Uolevi 可以从左上角开始,按以下方式移动:
向下 → 捡硬币 → 向右 → 捡硬币 → 向下 → 向左 → 捡硬币 → 向右 → 捡硬币 → 向右 → 捡硬币
Uolevi 不可能收集到大于 6 个金币,因为边缘所有格子的承受能力都小于等于 5。
数据范围:
本题采用捆绑测试。
子任务 |
分值 |
特殊性质 |
1 |
17 |
1≤nm≤16,1≤d≤16 |
2 |
12 |
1≤nm≤2⋅105,1≤d≤5 |
3 |
11 |
n=1,1≤m≤100,1≤d≤100 |
4 |
19 |
n=1,1≤m≤2⋅105,1≤d≤2⋅105 |
5 |
14 |
1≤nm≤1000,1≤d≤1000 |
6 |
27 |
1≤nm≤2⋅105,1≤d≤2⋅105 |