読者です 読者をやめる 読者になる 読者になる

競技プログラミングのコンテストまとめ

競技プログラミング

この記事はTSG Advent Calendar 2016 - Adventarの17日目の記事として書かれました。
 ネタがない中、無理やり絞りだしたものなのでn番煎じのものですがお許しを。
 あえていうならば、かなり主観が入っているので参考になりやすいかもしれません。
 また、主要なコンテストがいつ開催されているのかはTopCoder部に書かれているので参考にするとよいです。

Atcoder

https://atcoder.jp/
週に一回程度の頻度でコンテストが行われている日本語のサイト。多くの日本の強い競技プログラマーが作問等に携わっており、問題の質が高い。コンテスト後に解説放送が行われているのも特徴。
 Atcoderで行われているコンテスト達

  1. ABC…二週に一度ほど行われる初心者向けのコンテスト。初めのうちはこれに参加するとよいと思われる。
  2. ARC…ABCとセットで行われるABCの上位互換のコンテスト。ABCが物足りなくなったらこちらに参加するとよい。
  3. AGC…最近始まった、二週に一度ほど行われる難度の高いコンテスト。最も問題の質が高いとされ、世界の強豪たちも参加している。
  4. 企業コン…企業が主催する不定期のコンテスト。良い成績を残すとオンサイトの本戦に参加でき、上位にはいると賞金がもらえるというシステムのことが多い。
Codeforces

http://codeforces.com/
 おそらく、いま世界で一番人気が高いサイト。開催日時は不定期なのでtopcoder部で日頃チェックするとよい。コンテストによって時間や問題数は変化するのだが、多くの場合は2時間で5問解く。比較的実装が重いデータ構造などが出題されることがある。問題文はもちろん英語。
 提出したコードはpretestという弱いテストケースでのみジャッジされ、コンテスト終了後にsystem testという強いテストケースでジャッジされる。コンテスト中に、pretestを通した他の人のコードの穴をつくテストケースを作ることができたら得点が加算される。

Topcoder

https://www.topcoder.com/
 昔はtopcoderの地位が圧倒的に高かったのだが、最近は衰退していてコンテストの頻度も下がってしまった。開催日時は不定期なのでtopcoder部で日頃チェックするとよい。75分で3問解き、その後にchallenge phaseという時間が設けられている。数学力やひらめきが重視されるコンテストで、実装は比較的軽いことが多い。問題文はもちろん英語。
 提出したコードはその場ではジャッジがかからず、challenge phaseという、他の人のコードの穴をつくテストケースを作って得点を得るための時間がある。challenge phaseが終わるとまだ残っているコードに対してジャッジがかかり、最終的な結果が得られる。
 最近、ブラウザ上でもコンテストに参加できるようになったが、あまり評判がよくないためappletを入れたほうがよい。また、そのままだと使い勝手が悪いため、プラグインを入れたほうが良い。よって、他のコンテストにくらべて環境を整えるのが少し面倒くさいかもしれない。

yukicoder

http://yukicoder.me/
 週に一回程度コンテストが行われている日本語のサイト。徐々に人気が高まっている印象を受ける。サイトのモットーがゆるふわということもあり、とてもゆるいイメージが強い。レーティングなどもゆるいので、気軽に日本語で参加したいということなら参加するとよいかもしれない。(ゆるふわと言っても難しい問題は難しいし、上位陣は超強い)

codechef, hackerrank, hackerearth, csacademy

https://www.codechef.com/
https://www.hackerrank.com/
https://www.hackerearth.com/
https://csacademy.com/
 これらはよく聞くが、僕が参加したことのないのでわからない(すいません)。csacademyは最近強い人たちが参加しているイメージがあり、hackerearthは最近聞かなくなり、hackerrankは本当に色々なコンテスト(ネタコンテストも含む)が行われているイメージがあり、codechefは長期間でコンテストをやっているイメージがある。

その他オンラインジャッジ

 競技プログラミングの練習として、コンテスト以外で問題を解くことがあると思われるのだが、その際に上記のサイト以外にも問題を掲載しているサイトがあるため紹介しておく。

AOJ

http://judge.u-aizu.ac.jp/onlinejudge/
 会津大学が管理しているサイト。パソコン甲子園の問題や、情報オリンピックの問題、ICPCの問題など問題が豊富にあるため多くの競技プログラマーに使われている。

PKU

http://poj.org/
 北京大学によって管理されているサイト。中国のサイトだが問題文は英語なので解ける。Time Limitがギリギリに設定されていて、定数倍改善力が鍛えられるとよく言われるサイトだが、解けば力がつくと言われている。

最後に

 実際にはもっとたくさんのサイトでコンテストが行われているし、オンラインジャッジもたくさんあるが、これだけ知っていればある程度は十分だと思われる。もしこれだけでは不十分だと感じるようになったらtwittertopcoder部などから情報を仕入れて新たなコンテストに参加してみるとよいと思う。