Online Round1 通ったよ

今年から参加した Google Code Jam. Quolification Round は問題 C の large が時間切れになった以外は問題無く通った.
昨日の Sub-Round A, 今日の Sub-Round C とエントリしてなんとか通った.
全体的な反省としては, 競技者としてまだ未熟だなぁというあたり. 時間配分とか実装スピードを加味してモデリング方法を選ぶとか, 色んな面で反省が多かった.
Sub-Round A で出た反省点を踏まえた結果, Sub-Round C を通過することができたと思っている.

とか言いつつ, Sub-Round C が開始したときログインしてなくって焦ったんだけどね:P

Sub-Round A: 問題 A

モデルの実装方法に悩んで時間を浪費.
Python で挑んだんだけど, リストや配列に関してはまだ C 脳が抜けきらない. その中途半端さが災いして無駄に悩む.
おまけに Python のリストは負のインデックスも取れるというのに嵌るという, なんと言うか, もうね. 自分に腹が立った.

Sub-Round A: 問題 B

アルゴリズムが全く思い浮かばなかったのでパス.

Sub-Round A: 問題 C

「あぁ, And-Or 木を構成すればいいのね」とまでは分かったけど実装で躓いた.
あぁああ, 実装力が無い. まぁ, もっと実践していけばいいんだけどね.
元数学専攻の理論屋 (それも未熟な) なんだなぁ, と反省.

問題 A のみの 1 完で終了. もちろん落選.

Sub-Round C: 問題 A

一晩寝て気を取り直して再挑戦.

良く見るとめっちゃ簡単. 罠があるんじゃないか? と思い計算量をざっと見積るも問題無し.
開始5分くらいで正解者がどんどん出てるし, 安直にやって問題無いんだろう, と判断し実装.
安直な実装で大丈夫でした.

Sub-Round C: 問題 B

これは英語に苦労した. Google Code Jam はどうやら問題の状況設定がお茶目なのが多いみたい.
この問題も Google Code Jam みたいなのを運営する人が主人公の問題設定でした.
たぶん暗黙の前提みたいなのが自分の中にあったのだろうけど, 文章自体の理解に苦しんだ.
いったん理解してしまえば, 単なる数学問題だった. O(1) のアルゴリズムが組めたので余裕で正解.

Sub-Round C: 問題 C

これはアルゴリズムに苦しむ. 再計算を極力抑えようと色々考えているうちに時間だけが過ぎ, 時間切れで small すら出さずに終了.
1000 位以内に入っていたから気が抜けちゃったのもあるしね. ここは反省.
ただ逆に言えば, 確実に点が取れる問題から取り掛かったという作戦が奏功したとも言える.

前回の反省を活かして, すぐにコーディングせずにノートに向かってたのが良かったみたい. 自分にはこのスタイルが合ってる.
あ, どっちの Sub-Round も問題は A → B → C の順に解きました.

結果は A と B の 2 完で 600位通過.

以上, 簡単ですが GCJ 報告でした〜.

P.S.
http://twitter.com/cocoatomo/status/14552289561