2013-05-01
Google Code Jam 2013 Qualification Round
Problem A. Tic-Tac-Toe-Tomek
問題
- ワイルドカードありの4目並べ
- ゲームの状態を答える
方針
Problem B. Lawnmower
問題
- 芝の状態が与えられる
- 水平または垂直にまっすぐ芝を刈る
- その状態にできるかどうか答える
方針
- 水平で考える
- 最高の高さmを求めておく
- mより低い場所があったら、垂直で刈った部分として記憶する
- 垂直についても同様
- 刈った高さ未満の場所があるかどうかで判定
- https://github.com/firewood/topcoder/blob/master/gcj_2013/QR_B.cpp
Problem C. Fair and Square
問題
- 回文数を2乗したものが回文数なものを求めたい
- AからBまでの個数を求める
- ↓これらしい
- http://oeis.org/A057136
方針 (small)
- 全探索
方針 (large 1)
- 順列から回文数を作るには、偶数桁なら反転してくっつけて、奇数桁なら中央以外を反転してくっつければいい
- 範囲が10^14までなので、2乗する前の回文数は10^7未満
- 最大でも10^4の列挙から作れる
- https://github.com/firewood/topcoder/blob/master/gcj_2013/QR_C1.py
方針 (large 2)
- わからん
- (終了後)
- tomerunさんのソースを読む
- 数をabcdcbaなどとして筆算してみる
- 桁上がりすると左右対称でなくなり破綻する
- 桁上がりしないことを必要条件にしてみる
- 中央の数値は、2×(a^2+b^2+c^2)+d^2のように、2乗の和になる
- 元々中央の数以外は2倍
- なので、中央の数以外は、2乗の和が4以下である必要がある
- すなわち2が1個以下か1が4個以下(最初の桁を含む)
- 中央の数は0から2まで試す
- そういう数を列挙して、回文数を作って、2乗して判定する
- https://github.com/firewood/topcoder/blob/master/gcj_2013/QR_C2.py
Problem D. Treasure
問題
- 何種類かの錠前がついた宝箱と、いくつかの鍵がある
- 宝箱の中にはいくつかの鍵が入っている
- 全ての宝箱を空けられる順番を求める
- 複数可能なときは、宝箱の番号の辞書順最小
方針 (small)
- 鍵を辺、宝箱を頂点としてBFSで力技
- 経由違い(例えばA->B->CとB->A->C)を同一と見なすよう記憶しておく
- (終了後)
- DFSでよかった
- https://github.com/firewood/topcoder/blob/master/gcj_2013/QR_D.cpp
結果
A + B + C large 1 + D small = 135pt
2乗と回文がつらいので、CはPythonで解いた。回文判定・生成はスライス大活躍。
C large 2が重かったがいい練習になった。
- 31 https://topcoder-g-hatena-ne-jp.jag-icpc.org/
- 2 https://www.google.co.jp/
- 1 http://www.google.com/url?sa=t&rct=j&q=srm+517&source=web&cd=25&ved=0CMUBEBYwGA&url=https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/20111015/1318653741&ei=vUyBUf3TA8uZiAf_zoHIDA&usg=AFQjCNFC9dh9qlPdlNQF19OLQWL7zSpNtA
- 1 http://www.google.com/url?sa=t&rct=j&q=srm+516&source=web&cd=3&ved=0CDsQFjAC&url=https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/20110928/1317217318&ei=oHuCUYafFK-5iAeEn4HIDA&usg=AFQjCNFcA89p2tq59k06QJ36YjgRfUBMqg
- 1 http://www.google.com/url?sa=t&rct=j&q=srm516+&source=web&cd=5&ved=0CEcQFjAE&url=https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/20110928/1317217318&ei=bJKCUef9D-iuiQf8kYDwDw&usg=AFQjCNFcA89p2tq59k06QJ36YjgRfUBMqg