2010年から2012年までのプログラミングコンテストを振り返る

自分の実力がどれくらい向上しているのか自分でわからないので2011年5月から2012年12月16日までのコンテストについて時系列順に振り返ってみる。「参加人数」は0より大きい点数を取った人数を参加人数として扱い、「上位何%か」のところには(自分の順位)÷(参加人数)×100の小数第2位以下を切り捨てしたものとしている。

日付 時間 コンテスト名 スコア / 満点 順位 / 参加人数 上位何%か
2011年 05/14 5時間 UTPC 2011 300 / 1200 120位 / 157人 76.4%
2011年 06/05 5時間 UAPC 2011 3 / 12問 46位 / 156人 29.4%
2011年 08/06 5時間 KUPC 2011 400 / 1000 48位 / 132人 36.3%
2011年 09/24 5時間 UAPC 2011 summer 1 / 10問 55位 / 72人 76.3%
2011年 10/15 4時間 RUPC 2011 3 / 9問 57位 / 97人 58.7%
2011年 12/24 5時間 Xmas Contest 2011 175 / 800 63位 / 92人 68.4%
2012年 03/03 4時間 CTPC(一般) 500 / 1100 30位 / 64人 46.8%
2012年 03/13 3時間 RitsCamp Day1 4 / 7問 13位 / 53チーム -
2012年 03/14 5時間 RitsCamp Day2 2 / 12問 9位 / 17チーム -
2012年 03/15 3時間 RitsCamp Day3 1 / 6問 34位 / 37チーム -
2012年 04/14 90分 ARC #001 (鯖が落ちたので中止) 300 / 400 4位 / 139人(参考記録) -
2012年 05/02 90分 ARC #002 300 / 400 89位 / 358人 24.8%
2012年 05/26 3時間 ふか杯 300 / 700 22位 / 102人 21.5 %
2012年 05/27 90分 ARC #003 200 / 400 113位 / 302人 37.4%
2012年 06/02 2時間 WUPC 2012 430 / 600 47位 / 137人 34.3%
2012年 06/10 90分 HBPC 100 / 400 29 / 29 100%
2012年 06/16 90分 ARC #004 100 / 400 198位 / 307人 64.4%
2012年 06/30 90分 ARC #005 200 / 400 157位 / 261人 60.1%
2012年 07/01 5時間 KUPC 2012 500 / 1200 102位 / 178人 57.3%
2012年 07/06 3時間 ICPC国内予選 2 / 7問 69位 / 320チーム? 21.5%
2012年 07/21 90分 ARC #006 不参加 - - -
2012年 08/03 2時間 天下一予選A 250 / 400 70位 / 245人 28.5%
2012年 08/18 2時間 天下一予選B 180 / 400 73位 / 166人 43.9%
2012年 08/29 2時間 天下一予選C (携帯から参加) 200 / 400 112位 / 168人 66.6%
2012年 09/03 3時間 ACPC2012 Day1(携帯から参加) 1 / 7問 33位 / 35チーム 94.2%
2012年 09/05 3時間 ACPC2012 Day3(携帯から参加) 1 / 6問 22位 / 26チーム 84.6%
2012年 09/08 90分 ARC #007 200 / 400 142位 / 216人 65.7%
2012年 09/15 5時間 JAGSummerCamp Day2 2 / 10問 27位 / 38チーム 71.0%
2012年 09/16 3時間 JAGSummerCamp Day3 A 1 / 6問 27位 / 32チーム 84.3%
2012年 09/16 3時間 JAGSummerCamp Day3 B 1 / 7問 35位 / 42チーム 83.3%
2012年 09/17 5時間 JAGSummerCamp Day4 0 / 10問 - -
2012年 09/22 90分 ARC #008 250 / 400 48位 / 248人 19.3%
2012年 10/20 5時間 ACPC2012Day2OL 3 / 10問 24位 / 36位 66.6%
2012年 10/20 90分 ARC #009 240 / 400 69位 / 278人 24.8%
2012年 10/21 5時間 Autumn Fest 2012 100 / 1070 68位 / 99人 68.6%
2012年 11/04 5時間 ICPC模擬地区予選 2012 1 / 10問 49位 / 49人 100%
2012年 11/18 5時間 ICPCアジア地区予選 2012 1 / 10問 31位 / 34チーム 91.1%
2012年 11/24 1時間 DigitalArts PC 200 / 300 55位 / 176人 31.2%
2012年 12/02 5時間 UTPC 2012 355.22 / 2400 51位 / 171チーム 29.8%
2012年 12/08 4時間 WUPC 2nd 260 / 800 71位 / 201 35.3%
2012年 12/16 90分 ARC #010 210 / 400 47位 / 287人 16.3%
  • 初めてプログラミングコンテストに参加したのは2010年のICPC国内予選だが当時はAOJ・PKU・TopCoderの存在も知らず、ろくにプログラムも書けないレベルで0完だった。
  • AOJの存在を知り、問題をちゃんと解き始めたのは2010年9月頃からで、実質のデビュー戦にあたるのはUTPC 2011(2011年5月)になる。
  • 2011年の6月くらいにはやるだけ問題くらいは確実に解けるようになっていたが、BFSとDFSの使い分けがまだ上手にできないレベルで、典型的なDPやダイクストラすら書けないレベルだった。
  • 2011年のICPC国内予選は入院していて不参加だった。参加していたとしても高々3問しか解けないレベルだったので確実に予選落ちしていたと思う。
  • 自力で典型DPを書けるようになったのはRUPC 2011以降(2011年10月)で、このとき初めて実戦でDPが書けたので感激した記憶がある。
  • 2012年3月の立命館合宿ではじめて競技プログラマの方々の存在を知った、周りのレベルが本当に高くて刺激を受けた。
  • 2012年4月から新AtCoderがオープンし、ここからAtCoder Regular Contestを始めとしてコンテストラッシュがはじまった。
  • 2012年6月くらいになると典型的なDFS, BFS, DP, ダイクストラくらいは書けるようになっていたはず。二分探索や構文解析はまだ書けないレベルだった
  • 2012年のICPC国内予選はいろいろと失敗して2問しか解けなかったが不思議な力でアジア地区予選の出場権を得る。
  • 2012年JAG Summer Campに参加して自分の実力は地区予選レベルの問題がぜんぜん解けないレベルであることを知る。合宿のコンテスト中は隣に妖精さんがいた。
  • 合宿4日目は2010年ICPC国内予選ぶりの0完で、チームのみんなには申し訳ない感じだった。
  • 合宿終了後は解けなかった問題を復習し、座標圧縮、二次元累積和、構文解析、二分探索、ローリングハッシュが自力で書け、かなり多くのことを覚えた。
  • ICPCアジア地区予選は結局1問しか解けず明らかに自分の実力不足だった
  • 今年のAtCoderでのコンテストは順位がいつも安定して50-70位であることが多く頭打ちになっている。さらに上を目指すにはより難しい問題を解けるようにならないといけない。
  • 2012年で0完しそうで焦ったコンテストは「RitsCamp Day 3」「HBPC」「ACPC2012Day2OL」「Autumn Fest 2012」「ICPC模擬地区予選 2012」あたり。特に「HBPC」はコンテスト残り2分でsubmit→ACで、ぎりぎりすぎてコード書いているときに心臓止まりそうだった。

今後の課題

  • AOJの問題だけでなく、PKU・SRMProject Eulerあたりの問題も解いていきましょう
  • ネットワークフロー系の問題も解けるようになりましょう
  • 数値計算アルゴリズムも覚えましょう
  • 期待値DPなど確率などが絡む問題も解けるようになりましょう
  • 数え上げ系の問題も解けるようになりましょう