GCJ 2009 Round 1A
予想に反して難しい順にソートされていて、しかも点数が逆転してたりする。
A
ある整数をN進数に変換し、各桁の二乗和を求める。この操作を繰り返し行ったときに1になるものを求めたい。Nに当てはまる数字群が与えられるとき、最小の整数を答えよ、という問題。
愚直な実装をやって下から探索すると、小さい入力のケースでは求まる。大きい入力のケースでは、うまく枝を狩る必要があるんだと思う。2進数とかでうまくいくケースが多過ぎるので、後でチェックにしか使わない、とか?
B
現在地から目的地まで移動するのにかかる最短時間を答えよ、という問題。信号がある。
ダイクストラなんだけれど、次の状態に遷移する枝が動的に(ってほどでもないけど)変化するのでうまく計算する。問題サイズの変更による問題は起こらなさそう。
C
N種類のカードを少なくとも1枚ずつ回収することを考える。C種類のカードを毎回渡されるとき、何回でN種類揃うか、期待値を答えよ、という問題。
現在持っている種類数から、C種類もらうとN種類増えるのは何通りか、というのを組み合わせで求める。増える場合の期待値は分かるので、自分の期待値を未知数にして方程式を立てればいい。小さいケースは全探索でも求まる。