Hatena::Grouptopcoder

hotpepsiの練習帳

2013-05-01

Google Code Jam 2013 Qualification Round

01:38

Problem A. Tic-Tac-Toe-Tomek

問題

方針

Problem B. Lawnmower

問題

  • 芝の状態が与えられる
  • 水平または垂直にまっすぐ芝を刈る
  • その状態にできるかどうか答える

方針

Problem C. Fair and Square

問題

方針 (small)

  • 全探索

方針 (large 1)

方針 (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)

結果

A + B + C large 1 + D small = 135pt

2乗と回文がつらいので、CはPythonで解いた。回文判定・生成はスライス大活躍。

C large 2が重かったがいい練習になった。

ゲスト



トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/20130501