結果
問題 |
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