#indeednow2015finalbd. [indeednow_2015_finalb_d]Game on a Grid
[indeednow_2015_finalb_d]Game on a Grid
问题文
Indeed 公司的员工 A 正在玩以下这个游戏。
存在一个 的二维棋盘,其中每个方格的纵向长度为 ,横向长度为 。我们用 表示位于第 列、第 行的方格。
每个方格上都有一个非负整数 。
A 可以根据以下规则行动:
- 可以从当前方格移动到相邻的上、下、左、右方格,但不能超出棋盘边界。
- 当初次到达方格时,获得该方格上的数值作为得分。
- 当从当前方格移动到未曾到达过的方格时,额外获得移动奖励得分,即 。
- 当移动到已经到达过的方格时,不产生得分。
A 最初位于起始方格 。A 想要根据规则自由行动,并最终到达目标方格 。请输出 A 可以获得的最大总得分。
输入
输入以以下格式从标准输入中给出:
[重要]先前的输入形式中 的表示方式写错为 。现已修正。非常抱歉给您带来的困扰。(16:01)。
… … : …
- 第 行为两个用空格分隔的整数 和 ,表示棋盘的纵向长度和横向长度 。
- 第 行为两个用空格分隔的整数 和 ,表示起始方格的坐标 。
- 第 行为两个用空格分隔的整数 和 ,表示目标方格的坐标 。
- 第 行至第 行每行包含 个用空格分隔的整数 ,表示每个方格上的数值。
- 对于任意 和 ,满足 ,,有 。
输出
输出一个整数,表示 A 可以获得的最大总得分。在末尾输出换行符。
输入示例1
1 6
2 1
2 1
0 1 2 3 4 0
输出示例1
30
起始方格和目标方格都位于棋盘左边第二个方格。在这个棋盘上,可以获得的最大得分是 30 分,并且以下是实现该得分的一种操作:
- 初始时,访问起始方格 ,其数值为 1。累计得分为 1 分。
- 移动到方格 ,其数值为 2,移动奖励得分为 。因此,累计得分为 5 分。
- 移动到方格 ,其数值为 3,移动奖励得分为 。因此,累计得分为 14 分。
- 移动到方格 ,此时累计得分为 30 分。
- 从已访问过的方格 再次移动到 ,不会得分。
- 从 移动到 ,也不会得分。行动结束。最终累计得分为 30 分。
输入示例2
3 3
1 1
3 3
2 2 2
1 2 1
1 1 1
输出示例2
33
输入示例3
10 10
5 2
6 2
31 0 60 19 87 98 35 68 21 41
21 46 85 72 51 13 0 49 19 25
79 82 46 65 30 99 29 44 99 8
39 48 70 99 82 32 25 49 32 54
81 20 57 70 5 40 88 97 56 17
69 54 35 98 7 38 59 91 80 34
28 13 14 28 60 26 82 10 17 100
29 0 27 43 45 88 88 92 21 67
62 33 35 22 26 68 74 95 86 79
68 18 83 72 85 21 72 34 57 77
输出示例3
370423