AT_indeednow_2015_finalb_d Game on a Grid
题目描述
Indeed公司的员工A君正在玩一个有趣的游戏。
游戏棋盘由 $H$ 行 $W$ 列的格子构成,共有 $H \times W$ 个方格。我们用 $(x, y)$ 表示棋盘上从左数第 $x\ (1 \le x \le W)$ 列,从上数第 $y\ (1 \le y \le H)$ 行的格子。
每个格子上都写有一个非负整数,记为 $P_{(x,y)}$。
A君在棋盘上的某个格子,并根据以下规则行动:
- 可以向四周相邻的格子移动,但不能超出棋盘边界。
- 第一次访问某个格子时,获得该格子上数字的得分。
- 从当前格子移动到未访问过的格子时,会额外获得移动加分,计算公式为「当前格子的数值」乘以「目标格子的数值」。
- 移动到已经访问过的格子时,不加分。
A君从起点 $(S_x, S_y)$ 开始,可以自由行动,最终抵达终点 $(G_x, G_y)$。即使抵达终点后,也可以继续自由移动,但最终仍需到达终点。
请计算A君能得到的最大总得分。
输入格式
输入通过标准输入读取,格式如下:
> $H$ $W$ $S_x$ $S_y$ $G_x$ $G_y$
> 格子数值: $P_{(1,1)}$ $P_{(2,1)}$ … $P_{(W,1)}$(第1行)
> $P_{(1,2)}$ $P_{(2,2)}$ … $P_{(W,2)}$(第2行)
> :
> $P_{(1,H)}$ $P_{(2,H)}$ … $P_{(W,H)}$(第H行)
- 第一行包含两个整数 $H$ 和 $W\ (1 \le H, W \le 100)$,表示棋盘的行数和列数。
- 第二行包含两个整数 $S_x$ 和 $S_y\ (1 \le S_x \le W, 1 \le S_y \le H)$,表示起点坐标。
- 第三行包含两个整数 $G_x$ 和 $G_y\ (1 \le G_x \le W, 1 \le G_y \le H)$,表示终点坐标。
- 接下来的 $H$ 行,每行包含 $W$ 个整数,分别表示对应格子上的数值 $P_{(x, y)}\ (0 \le P_{(x, y)} \le 100)$。
输出格式
输出在第一行,打印出A君能获得的最大总得分,最后一行为换行符。
### 示例说明
在一个起点和终点均为从左数第二列的棋盘中,最大可能得分是 $30$。以下是一个达到该得分的路径示例:
- 首先访问起点 $(2, 1)$,该格子上的数为 $1$,获得 $1$ 分。
- 移动到 $(3, 1)$,该格子上的数为 $2$,获得移动加分 $1 \times 2 = 2$ 分,这时总分为 $5$。
- 移动到 $(4, 1)$,该格子上的数为 $3$,获得移动加分为 $2 \times 3 = 6$ 分,总分为 $14$。
- 移动到 $(5, 1)$,此时总分为 $30$。
- 返回 $(4, 1)$,已访问,得分不变。
- 返回 $(3, 1)$,同样得分不变。
- 返回 $(2, 1)$,结束游戏,最终总分仍为 $30$。
**本翻译由 AI 自动生成**
说明/提示
### Sample Explanation 1
スタート地点もゴール地点も左端から $ 2 $ 番目のマスである盤面です。この盤面で得られる最大得点は $ 30 $ 点であり、それを達成する行動の一例を示します。 - スタート地点であるマス $ (2,1) $ に訪れる。このマスに書かれている数は $ 1 $ である。この時点での合計得点は $ 1 $ 点である。 - マス $ (3,1) $ に訪れる。このマスに書かれている数は $ 2 $ であり、移動ボーナスは $ 1×2 $ 点である。したがって、この時点での合計得点は $ 5 $ 点である。 - マス $ (4,1) $ に訪れる。このマスに書かれている数は $ 3 $ であり、移動ボーナスは $ 2×3 $ 点である。したがって、この時点での合計得点は $ 14 $ 点である。 - マス $ (5,1) $ に訪れる。この時点での合計得点は $ 30 $ 点である。 - マス $ (4,1) $ に訪れる。既に訪れたマス同士の移動なので得点の変化はない。 - マス $ (3,1) $ に訪れる。同様に得点の変化はない。 - マス $ (2,1) $ に訪れ、行動を終える。得点の変化はない。最終的な合計得点は $ 30 $ 点である。