2010-06-11

[][] SRM472 02:22 はてなブックマーク -  SRM472 - TopCoderの学習のお時間

2010-06-05 27:00-(JST

http://www.topcoder.com/stat?c=coder_room_stats&cr=22744421&rd=14154&rm=304807

珍しい時間

Level タイトル 試合中 あとで ひとこと
DIV1 250 PotatoGame AC 29min+1回再提出 - 実験して推測
DIV1 600 TwoSidedCards Compiled - DPを書いて撃沈
DIV1 900 ColorfulTiles Opened - 正しく900とは珍しい
  • Coding
    • 250
      • Nimかー。サイズが大きいのでO(N)でも無理。単純なシミュレーションではない
      • 4進数だと思えば、1ターンごとにどれかの桁が1ずつ減っていくから、4進数にしたときの各桁の和が系の性質を定める値だ!
      • さくっと書いて提出、部屋内最速!
      • って、これ本当か? 怪しい気がしてならないので反例を探してみよう
      • うーむ、n=8のとき、先手が4を取ると後手の勝ちだが、1を取ると先手の勝ちになるぞ。繰り下がりが起きるから、各桁の和は使えないのか
      • ではなんだろう、わからない
      • わからない
      • サンプルがとても不親切なのは、いろんな例を載せてしまうとバレてしまうような単純な規則があるからではないか?
      • DPでn=1000まで計算させてみた
      • 明らかにパターンが見える…
      • どうしてそうなるかは置いておいてとりあえずサブミット
    • 600
      • 何も手がかりがつかめない
      • 600>900のこともあるから900を開いてみよう
    • 900
      • さっぱりわからない
      • これは正しく900点だろう
      • 600に戻ろう
    • 600
      • 前から1枚ずつ足していって、場合の数を更新していくDPコードを書いてみる
        • dp[i][j][k] で 「i枚目までを並べたときにj番目の位置の数字がkである場合の数」
      • 状態遷移にカードの裏表がちゃんと反映できないだめ解法だった
  • Challenge
    • 250は間違いなく自分と同じミスしている人がいるのでスピード勝負
    • 4で割った余りを足していっているようなコードを3つ落とせた
  • System Test
    • 自分の250は通った
    • 部屋内で撃墜残しはゼロ
  • スコア:119.70 + 0.00 + 0.00 + (50*3-25*0) = 269.70
  • 順位:65位/686人
  • レート:1697→1829

長らくレーティングの範囲が変わっていない

250の規則は、4 ≡ -1 mod 5 が関係してるのか

[] Google Code Jam 2010 Round2 01:55 はてなブックマーク -  Google Code Jam 2010 Round2 - TopCoderの学習のお時間

2010-06-05 23:00-

http://code.google.com/codejam/contest/dashboard?c=635102#

鬼門のRound2

ID タイトル small large ひとこと
A Elegant Diamond WA*5->AC AC 全然合わずに辛かった…
B World Cup 2010 AC Compiled 最初からlarge用を書いた方がお得だった
C Bacteria WA*2->AC Opened 部分点拾い
D Grazing Google Goats UnOpened UnOpened 読んですらいない
  • A
    • けっこう面倒そうだが点数低いだけあって書くだけ
    • 各点が広いダイアモンドの中心になり得るか調べて、中心になり得る点の中でサイズが一番小さいものが求める新しいダイアモンド。O(N^4)
    • データの持ち方は、変に変形させるとわけが分からなくなりそうなので入力のまんまで
    • サンプル合った、提出
    • Incorrect
    • あ、新しいダイアモンドのサイズ計算が間違ってるぽい、再提出
    • Incorrect
    • あ、新しいダイアモンドのサイズ計算が間違ってるぽい、再提出
    • Incorrect
    • あ、4回対称じゃなくて点対称でやってた、再提出
    • Incorrect
    • あ、新しいダイアモンドのサイズ計算が間違ってるぽい、再提出
    • Incorrect
    • …次へ行こうか(80分)
  • B
    • 条件をかみ砕くのがちょいとややこい
    • とはいえ、全部同じ値段ならば決勝に近い方から押さえていく方が有利なので貪欲に行けばいい
    • サンプル合った、提出
    • Correct、ようやくポイント獲得(90分)
  • C
    • とりあえずsmallはシミュレーションするだけだ、さっさと書いて部分点もらおう
    • Incorrectだと…
    • およよ、XとYがごっちゃになってる
    • Incorrect
    • ああ、普通に終了判定をミスっている、修正
    • Correct(110分)
  • さてもうあまり時間がないわけですが
  • Dは解いてる人がかなり少ないので捨てよう
  • Aのsmall/large解いても点数が500位に届かないが
  • しかしB-large解いても時間的に無理そう、結局通過のためには両方が必要
  • ならば意地でAを通そう
  • Aに戻る
    • 自分でサンプル足したりしつつ、もう一度よーく考える
    • おいおいこれ新しいダイヤのサイズ計算全然違うぞ
    • 修正して提出
    • Correct! やったついに…
    • largeも提出(135分)
  • B-large
    • うわあ15分しかない
    • どうせDPかメモ化ぽくやればいけるんだろ、ともうロクに考えずに再帰ぽいコードを書く
    • できた
    • サンプル合わない
    • 終了

結果

  • A-large通った
  • 845位/2500人くらい

今年もここで敗退…

まあ最終的に時間内にAを通せたのでそんなに気分は悪くない

来年こそは

[] Codeforces Beta Round #16 (Div. 2 Only) 01:24 はてなブックマーク -  Codeforces Beta Round #16 (Div. 2 Only) - TopCoderの学習のお時間

2010-06-03 22:00-

http://codeforces.com/contest/16

初参加。

ID タイトル 結果 ひとこと
A Flag AC 00:08 痛恨のコピペミス
B Burglar and Matches AC 00:19 急いでて問題読み違え
C Monitor AC 00:28 算数
D Logging WA*4->AC 00:48 Wikipediaゲー
E Fish AC 01:22 最後の問題も結局やるだけか
  • A
    • Div2 onlyの1問目だけあってさすがにやるだけ
    • サンプルの答えが合わない
    • そんな馬鹿な
    • デバッグ出力させてみると明らかに何かがおかしい
    • サンプルのコピペをミスってた…
    • 提出。AC
  • B
    • 2^m通り全部調べればいいんじゃないの?
    • サンプルの答えが合わない
    • あ…問題の解釈間違ってた…。マッチは部分的に取ってもいいんですね
    • 貪欲に多いやつから取ればいいのか
    • AC。だいぶ時間食ってしまった
  • C
    • 縦か横のどちらかが最大になる取り方だけ調べればよい
    • xとyを最大公約数で割って通分しておくのを忘れないよう
    • AC
  • D
    • 書いてあるとおり実装するだけかなぁ
    • message部分って何も意味ないよね…
    • WA
    • あ、「同じ時刻は1日10回まで」を処理するところミスってた
    • WA WA WA
    • よく問題を読む
    • hhは「from 01 to 12」だと…?
    • 注意書きにあったWikipediaの記事を読む
    • 0時じゃなくて12時なのか…
    • AC
    • 見事に引っかけられました
  • E
    • さすがに最後はちょっとややこしそう
    • 上手い方法は浮かばないがとりあえずビットDPぽくシミュレーションしてみようか
    • 通っちゃった…

結果

  • 順位:10位/252人
  • レート:? -> 1661