TopCoder部【SRM 440】
EASY 163.28/250.00 → Passed
インクレディブルマシーンきたこれええええ!!
――というわけで、まさかのインクレ物理の問題でした。
問題の詳細はめんどくさいので書きません。
解法は、2次方程式を解きながら二分探索しました。
MEDIUM 231.16/500.00 → Passed
N×M(N,M<=50)サイズのフィールド(空白、壁から成る。どこかの空白の上にはゴールが置かれている。ゴールはフィールド上にただ一つ存在。任意の異なる空白2箇所を選んだとき、常にそれら2点を結ぶルートがちょうど1つだけ存在)が与えられる。
主人公を任意の空白およびゴールからスタートさせることができ、その後の移動は、ゴールするまで、上下左右4方向のうち壁がない方向にランダムに一歩進むことを繰り返す。
主人公がゴールするのにかかる歩数の期待値を、各マスからスタートさせたときについて求め、それらの平均を出力せよ。
という問題でした。
マスiからスタートした場合の歩数の期待値をXiとすると、各マスに関して1次方程式が1本立ちます(たとえば、X1=0.5*X2+0.5*X3+1 など)。
フィールド上の空白の数(ゴールは除く)をnとすると、未知数n個の連立1次方程式が合計n本立ちます。ちなみに解はただ1通りに定まります。
で、これをガウスの消去法でも使って解きます。
nは1000ちょっとあるので間に合わなそうに見えますが、この問題の場合、「i行目にj行目のp倍を足す」という操作の大半はp=0なので、それをスキップしてやれば余裕で通ります(証明略。怪しい気もするけど通ったからどうせあってる)。疎行列って素晴らしい。
つまるところ、ライブラリをはっつけて一発な問題です。ああ持ってない自分の単独負けですね。
……とか思っていたのですが、まわりにこの方針で解いた人が誰もいませんでした。なぜに。
HARD 手をつけられるようになるのはいつの日か
CHALLANGE +0.0 -0.0
結果
・61位
・R:1939 → 2032