結果
| 問題 |
No.659 徘徊迷路
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-03-03 19:40:16 |
| 言語 | Ruby (3.4.1) |
| 結果 |
AC
|
| 実行時間 | 472 ms / 2,000 ms |
| コード長 | 653 bytes |
| コンパイル時間 | 254 ms |
| コンパイル使用メモリ | 7,424 KB |
| 実行使用メモリ | 12,672 KB |
| 最終ジャッジ日時 | 2024-07-04 02:27:57 |
| 合計ジャッジ時間 | 5,236 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 5 |
| other | AC * 12 |
コンパイルメッセージ
Syntax OK
ソースコード
R, C, T = gets.split.map &:to_i
Sy, Sx = gets.split.map &:to_i
Gy, Gx = gets.split.map &:to_i
Board = $<.map{|s|s.chomp.chars}
dirs = R.times.map{|y|
C.times.map{|x|
[1,0,-1,0,1].each_cons(2).select{|dy,dx|
Board.fetch(y+dy,[])[x+dx] != ?#
}
}
}
dp = R.times.map{[0.0]*C}
dp[Sy][Sx] = 1.0
[T, 5000+T%2].min.times{
next_dp = R.times.map{ [0.0]*C }
R.times{|y|
C.times{|x|
next if Board[y][x] == ?#
d = dirs[y][x]
if d.empty?
next_dp[y][x] += dp[y][x]
next
end
d.each{|(dy, dx)|
next_dp[y+dy][x+dx] += dp[y][x] / d.size
}
}
}
dp = next_dp
}
p dp[Gy][Gx].to_f