#P13432. [GCJ 2009 #1A] Crossing the Road

[GCJ 2009 #1A] Crossing the Road

Description

在道路交叉口,通常会有交通信号灯指示行人(步行的人)何时可以过马路。一位聪明的行人可能会根据信号灯变绿的时间来优化她穿越城市的路线。

本题中的城市是一张网格,高 NN 行、宽 MM 列。我们的行人希望从西南角的东北顶点出发,前往东北角的西南顶点。你的目标是帮助她用尽可能快的方式,从一个角落到另一个角落。

行人可以在信号灯全程为绿灯时横穿马路,每次穿越用时 11 分钟。行人也可以沿着一个街区的边,从一条街道走到另一条街道,这样的移动需要 22 分钟。行人只能沿着街区的边移动,不能从一个街区的角直接斜向穿越到对角线的角。

交通信号灯的变换模式如下:在第 ii 个路口,南北方向的信号灯会保持绿灯 SiS_i 分钟,此时东西方向为红灯。然后南北方向变为红灯,东西方向变为绿灯,持续 WiW_i 分钟。之后,信号灯再次开始同样的循环。行人在 t=0t=0 分钟时开始移动;第 ii 个路口的信号灯在 t=Tit=T_i 分钟时以南北方向绿灯开始一个循环。t=Tit=T_i 之前也有信号灯的循环。

例如,编号为 0 的路口可能有以下数值:

S0=3S_0 = 3W0=2W_0 = 2T0=0T_0 = 0

南北方向在 0 分钟后变为绿灯,持续 33 分钟,在此期间行人可以南北方向过马路,东西方向为红灯。然后信号灯切换,接下来的 22 分钟行人可以东西方向过马路,南北方向为红灯。然后,信号灯在 55 分钟后重新开始循环。这与如下配置完全等价:

S0=3S_0 = 3W0=2W_0 = 2T0=10T_0 = 10

Input Format

输入的第一行包含测试用例数 CC。接下来是 CC 组测试数据,每组格式如下:

第一行包含 "N M",分别表示水平方向道路(行)数 NN 和垂直方向道路(列)数 MM。接下来 NN 行,每行描述该行上的所有路口信息,第 ii 行(ii00 开始,最北为 00 行)包含 3M3M 个整数,依次为:

Si,0S_{i,0} Wi,0W_{i,0} Ti,0T_{i,0} Si,1S_{i,1} Wi,1W_{i,1} Ti,1T_{i,1} \dots Si,M1S_{i,M-1} Wi,M1W_{i,M-1} Ti,M1T_{i,M-1}

Si,jS_{i,j}Wi,jW_{i,j}Ti,jT_{i,j} 分别表示从北到南第 ii 行、从西到东第 jj 列的路口的信号灯参数。

Output Format

对于每组测试数据,输出一行 "Case #x: t",其中 xx 是测试编号,tt 是行人从西南角到东北角所需的最短时间(分钟数)。

2
1 1
3 2 10
1 2
1 5 3 1 5 2
Case #1: 4
Case #2: 7

Hint

样例说明

第一个样例如上所述。行人先向北穿越(11 分钟),等待 22 分钟后再向东穿越(11 分钟),总共 44 分钟。

第二个样例见下图。行人先向东穿越(11 分钟),等待 22 分钟后再向北穿越(11 分钟),然后向东走一个街区(22 分钟),再向东穿越(11 分钟),总共 77 分钟。

限制条件

  • CCNNMMSi,jS_{i,j}Wi,jW_{i,j}Ti,jT_{i,j} 均为非负整数。
  • C100C \leq 100

小数据集(13 分)

  • 1N,M31 \leq N, M \leq 3
  • 0<Si,j,Wi,j100 < S_{i,j}, W_{i,j} \leq 10
  • 0Ti,j200 \leq T_{i,j} \leq 20

大数据集(20 分)

  • 1N,M201 \leq N, M \leq 20
  • 0<Si,j,Wi,j1070 < S_{i,j}, W_{i,j} \leq 10^7
  • 0Ti,j1080 \leq T_{i,j} \leq 10^8

翻译由 ChatGPT-4.1 完成。