結果
| 問題 |
No.659 徘徊迷路
|
| コンテスト | |
| ユーザー |
iwkjosec
|
| 提出日時 | 2018-06-16 14:23:16 |
| 言語 | C#(csc) (csc 3.9.0) |
| 結果 |
AC
|
| 実行時間 | 491 ms / 2,000 ms |
| コード長 | 1,876 bytes |
| コンパイル時間 | 2,584 ms |
| コンパイル使用メモリ | 113,164 KB |
| 実行使用メモリ | 81,732 KB |
| 最終ジャッジ日時 | 2024-06-30 16:15:20 |
| 合計ジャッジ時間 | 8,648 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 5 |
| other | AC * 12 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;
using System.Collections.Generic;
using System.Linq;
using static System.Console;
class Program
{
static void Main()
{
var RCT = ReadLine().Split().Select(int.Parse).ToArray();
var Syx = ReadLine().Split().Select(int.Parse).ToArray();
var Gyx = ReadLine().Split().Select(int.Parse).ToArray();
var R = RCT[0];
var C = RCT[1];
var T = RCT[2];
var Sy = Syx[0];
var Sx = Syx[1];
var Gy = Gyx[0];
var Gx = Gyx[1];
var map = new bool[R, C];
for (int i = 0; i < R; i++)
{
var line = ReadLine();
for (int j = 0; j < C; j++)
{
map[i, j] = line[j] == '.';
}
}
var d = new int[R, C];
for (int i = 1; i < R - 1; i++)
{
for (int j = 1; j < C - 1; j++)
{
if (map[i + 1, j]) d[i, j]++;
if (map[i, j + 1]) d[i, j]++;
if (map[i - 1, j]) d[i, j]++;
if (map[i, j - 1]) d[i, j]++;
}
}
if (d[Sy, Sx] == 0)
{
WriteLine(1);
return;
}
var dp = new double[R, C, 100000];
dp[Sy, Sx, 0] = 1;
for (int k = 1; k < 100000; k++)
{
for (int i = 1; i < R - 1; i++)
{
for (int j = 1; j < C - 1; j++)
{
dp[i, j, k] = (map[i + 1, j] ? dp[i + 1, j, k - 1] / d[i + 1, j] : 0) + (map[i - 1, j] ? dp[i - 1, j, k - 1] / d[i - 1, j] : 0) + (map[i, j + 1] ? dp[i, j + 1, k - 1] / d[i, j + 1] : 0) + (map[i, j - 1] ? dp[i, j - 1, k - 1] / d[i, j - 1] : 0);
}
}
}
if (T < 100000) WriteLine(dp[Gy, Gx, T]);
else WriteLine(T % 2 == 0 ? dp[Gy, Gx, 99998] : dp[Gy, Gx, 99999]);
}
}
iwkjosec