TopCoder SRM 418 DIV1

イエローコーダーとして初めてのSRM。さてこの地位を保てるか。

Coding Phase

250点問題
高校の数学Ⅰでありそうな組み合わせの問題。最大サイズが小さいので、どんな方法で解いても時間オーバーになる心配はまずない。トラップになるような箇所もなく、ただの早解き大会だった。こういうのはさっと早解きだということを見極めて、5分くらいで終わらせられるようにならなきゃだね。
500点問題
まず単純に再帰で書いたら、最悪のケースでは実行時間オーバーになった。そこでキャッシュを効かせようとしたけど、うまくいかなくて時間切れ。チャレンジのときに他の人のコードを見ていて、どこが間違ってたのか分かった。もう一歩だったなー。【あとで確かめる】

こういうのって500点問題の一つのパターンなんだろか。

  • 単純な再帰での解法は時間オーバー
  • 繰り返し構造が出てくるところでキャッシュする
  • 実行時間と使用メモリ量の兼ね合いでキャッシュサイズを調整

これがDPというやつか。だんだん分かってきたぞ。

Challenge Phase

うおっ、自分以外の全員がC++だ! 肩身が狭い。
500点問題をキャッシュさせずに解いてる人を発見したのでチャレンジしようとしたら、タッチの差で先に撃墜されてしまった…。
他にもキャッシュ無しで解いてるっぽい人がいたのでそちらにチャレンジしてみたら、あえなく失敗。コードをよく読んでみるとちゃんとキャッシュされていた。早とちりはだめだね。
まあ今回は初チャレンジができただけでもよしとしよう。あのテストケース作るUI、慣れないとけっこう操作しづらいので。

System-Testing Phase

全体的に落ちてる人少なめ。今回はチャレンジ〜システムテストがあまり盛り上がらない問題セットでした。

結果

Level Status Coding Time Score
250 Passed System Test 17:34 187.94
500 Compiled 57:03 0.0
900 Unopened - 0.0

チャレンジ1回失敗 -25.0
スコア 162.94 / 616人中454位 / レーティング 1513→1454
黄色からは落ちてしまったけれど、成長していることが実感できたので悲観してはいません。250点問題を時間かかってもいいから確実に取ってれば大きく下がることはないし、たまに500点問題を解ければすぐ戻ってこれる。