SP4034 MDOSTAVA - Pizza Delivery
题目描述
FarmerJohn 最近得到了一份工作,那就是送肯德基外卖!
FJ 所在的小镇可以看作是一个 $R$ 行 $C$ 列的矩形,被划分成 $R\times C$ 个单元格子,从上往下,行的编号是 $1\sim R$,而从左往右,列的编号是 $1\sim C$。
FJ 一开始在第 $1$ 行第 $1$ 列的格子处,他收到 $D$ 个顾客的订单,第 $i$ 个顾客的位置在第 $R_i$ 行第 $C_i$ 列的格子。
FJ 一开始就把所有顾客的订餐一起装在背包里,这样在送餐过程中就无须送一次餐返回一次出发点了。FJ 必须严格按照次序给顾客送肯德基(即先送完第 $1$ 个顾客,再送第 $2$ 个顾客,依次类推)。当送完所有的肯德基外卖后,FJ 也没有必要返回出发处。
FJ 的移动规则是这样的:他可以从当前格子移动一步,到达相邻的左格子或者相邻的右格子(两个格子相邻是指它们有公共边)。 **特别的,如果 FJ 当前所在格的列是第 $1$ 列或者第 $C$ 列,那么 FJ 还可以向上移动一格或者向下移动一格。**
任意时刻,FJ 都不能走出矩形的边界。FJ 每试图进入一个格子,都会花费一定的时间 $t_{i,j}$。在不同的格子,$t_{i,j}$ 可能不同。现在 FJ 要去装订餐了,所以问你:他送完所有订餐,至少需要多少时间?
输入格式
第一行,两个整数,$R$ 和 $C$。
接下来有 $R$ 行 $C$ 列,第 $i$ 行第 $j$ 列的整数表示 FJ 若试图进入格子 $(i,j)$ ,花费的时间 $t_{i,j}$。
接下来一行,有一个整数 $D$,表示有 $D$ 个顾客订餐。
接下来有 $D$ 行,每行两个整数,依次表示顾客的位置,即其所在行和所在列。保证顾客所在的位置不会重复。
输出格式
一个整数,表示 FJ 送完所有订餐的最少时间。
#### 数据范围与约定
$1\le R\le 2000,1\le C\le 200,1\le D\le 200000,0\le T\le 5000。$
#### 输入输出样例
输入 #1:
```
3 3
1 8 2
2 3 2
1 0 1
3
1 3
3 3
2 2
```
输出 #1:
```
17
```
输入 #2:
```
2 5
0 0 0 0 0
1 4 2 3 2
4
1 5
2 2
2 5
2 1
```
输出 #1:
```
9
```
Translated by @[Vocaloid世末歌者](https://www.luogu.com.cn/user/678881).