QOJ.ac

QOJ

実行時間制限: 3.0 s メモリ制限: 128 MB 満点: 120

#17094. 送货

統計

小 Ivica 最近在镇上最受欢迎的比萨店找到了一份送比萨的工作。

在工作日开始时,他会收到一张需要送达比萨的地点列表,送货顺序与列表中给出的顺序相同。

城市被划分为 $R \times C$ 的网格。行从 $1$ 到 $R$ 编号,列从 $1$ 到 $C$ 编号。

从任意单元格出发,都可以移动到其左侧和右侧的相邻单元格。只有在第一列和最后一列(第 $1$ 列和第 $C$ 列)中才允许向上或向下移动。

比萨店位于左上角 $(1, 1)$,这也是 Ivica 出发的起点。Ivica 会带上当天要配送的所有比萨,因此在两次配送之间或最后一次配送之后,他不需要返回比萨店。

对于城市中的每个位置,Ivica 都知道他每次经过该位置时需要花费的时间(例如,通过十字路口所需的时间)。

编写一个程序,计算 Ivica 送完所有比萨所需的最短时间。

输入格式

第一行包含两个整数 $R$ 和 $C$($1 \le R \le 2000$,$1 \le C \le 200$),表示城市的尺寸。

接下来的 $R$ 行,每行包含 $C$ 个整数。这些是 Ivica 每次进入某个位置时所花费的时间。时间为 $0$ 到 $5000$ 之间(含 $0$ 和 $5000$)的整数。

下一行包含一个整数 $D$($1 \le D \le 200000$),表示当天需要配送的比萨数量。

接下来的 $D$ 行,每行包含两个整数 $A$ 和 $B$($1 \le A \le R$,$1 \le B \le C$),表示需要送达比萨的位置。比萨按必须送达的顺序给出。不会有连续两个相同的送货位置。

输出格式

输出 Ivica 送完所有比萨所需的最短时间。

子任务

在占总分 70% 的测试数据中,$R$ 最大为 $250$。

样例

输入 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

输出 2

9

说明

在第一个样例中,最短路径经过以下位置: $(1, 1)$,$(2, 1)$,$(3, 1)$,$(3, 2)$,$(3, 3)$,$(2, 3)$,$(1, 3)$,$(2, 3)$,$(3, 3)$,$(2, 3)$ 和 $(2, 2)$

加粗的位置表示 Ivica 进行配送的地点。

配送的总时间为 $1+2+1+0+1+2+2+2+1+2+3=17$。

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.