E - 迷路 Editorial

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 500500

問題文

NNMM 列のマス目があります。上から ii 行目、左から jj 列目にあるマスを (i,j)(i,j) で表します。 特に、左上のマスは (1,1)(1,1) であり、右下のマスは (N,M)(N,M) です。

マス目の状態は 二次元配列 ss で表され、sijs_{ij}# のときマス (i,j)(i,j) には障害物があり、. または S または G のとき障害物はありません。

ロボットは 00 秒にS のマスから スタートし、 G のマスに出来るだけ短い時間で辿り着こうとします。

しかしロボットは常にどの方向にも動けるというわけではありません。

長さ KK の文字列 dd が与えられます。毎秒、ロボットは隣接するマスに移動するか、今いるマスにとどまることができます。ただし、tt 秒後から t+1t+1 秒後にかけては、ttKK で割った余りを rr (0rK10 \leq r \leq K-1) として、 dr+1d_{r+1} の方向にのみ 11 秒かけて 11 マス進むことが出来ます。現在いるマスを (i,j)(i,j) とした時、dr+1d_{r+1}U の場合は (i1,j)(i-1,j) に、 D の場合は (i+1,j)(i+1,j) に、L の場合は (i,j1)(i,j-1) に、 R の場合は (i,j+1)(i,j+1) に移動できます。マス目の外に出るような移動や、障害物があるマスへの移動は出来ません。

この条件のもとで S からG のマスに辿り着くまでの最短の時間を求めてください。

制約

  • 2N,M10002 \leq N,M \leq 1000
  • 1K1000001 \leq K \leq 100000
  • ss# または . または S または G からなる
  • SG の書かれたマスはそれぞれ 11 つずつ存在する
  • dd の長さは KK
  • ddU または D または L または R からなる
  • N,M,KN,M,K は整数である

入力

入力は以下の形式で標準入力から与えられる。

NN MM KK
d1...dKd_{1}...d_{K}
s11...s1Ms_{11}...s_{1M}
::
sN1...sNMs_{N1}...s_{NM}

出力

ロボットが S から G まで移動するのにかかる最短の時間を出力せよ。ただし、どのように移動しても S から G まで移動出来ない場合は 1-1 を出力せよ。


入力例 1Copy

Copy
2 3 5
UDRRL
S..
.#G

出力例 1Copy

Copy
7

入力例 2Copy

Copy
3 3 5
UDUDD
S..
...
.G.

出力例 2Copy

Copy
-1

どのように移動しても 22 列目に移動出来ません。


入力例 3Copy

Copy
3 3 5
UDLRD
S..
.#.
..G

出力例 3Copy

Copy
12


2025-03-14 (Fri)
10:16:55 +00:00