プログラミングコンテスト

提供: MonoBook
ナビゲーションに移動 検索に移動

プログラミングコンテストとは、プログラミングの腕を競う大会である。

いかに速く正確なコードを書けるかを競うタイプと、時間をかけて少しでもいい結果を出すプログラムを作るタイプがある。

主なコンテスト[編集 | ソースを編集]

TopCoder SRM[編集 | ソースを編集]

TopCoder SRMは、TopCoderというサイトで行われているコンテストの一つで、 75分で3問を解く。各問題は難易度ごとに得点が決められ、標準的には250点、500点、1000点である。 コードを提出すると、問題の得点からその問題を開いてからの時間で減点された得点が決まる。 同じ問題に再提出するとペナルティがある。

コーディング終了後、Challenge Phaseという撃墜フェーズがあり、撃墜によるボーナス点を狙う。

撃墜フェーズのあとシステムテストがあり、しばらくすると順位が確定し、もうしばらくすると 参加者のレーティングが変わる。(ときどき変わらないこともある)

Codeforces[編集 | ソースを編集]

標準的には2時間で5問を解くが、回によって変わることがある。

問題ごとに得点が決まっており、コードを提出すると提出までの時間により減点された得点が決まる。 同じ問題への再提出はペナルティがある。

提出したコードはPretestという簡単なテストにかけられ、これに通ると問題をLockできる。 Lockした問題への再提出はできなくなるが、その問題の他の人のコードをみて撃墜(Hack)ができるようになる。

時間終了後、システムテストにより順位が確定し、レーティングに反映される。

情報オリンピック[編集 | ソースを編集]

主に中高生向けである。

予選(日本)[編集 | ソースを編集]

3時間で6問を解く。 問題を解くコードを書き、入力をダウンロードしてローカルで実行し、 入力に対応する出力とソースコードを提出する。 出力が正解かどうかはコンテスト中はわからない。 正解した出力によって得点が入り、得点が大きい順にランク付けされる。Aランクの者は本選に進める。

本選(日本)[編集 | ソースを編集]

オンサイト(定められた会場で行う)で、会場に用意されたPCを用いて競技を行う。 参考資料の持ち込み・参照は不可であり、PCに用意されたSTLのドキュメントやmanなどのみ参照可能である。 問題は紙で与えられ、4時間で5問を解く。

コードを提出するとすぐにジャッジされ、一部(問題によっては全部)のテストケースに関する結果が通知される。

競技後は問題解説のスライド発表がある。Aランクになると春合宿に進める。

春合宿(日本)[編集 | ソースを編集]

競技のルールは本選と同じだが、5時間程度で3~4問程度を解く。 競技のほかにスライド発表などがある。

普通の問題の他にOutput Only Taskというものがあり、 問題に対して(ルール・制限時間の範囲で)どのような手段・時間をかけてもいいからローカルで出力を作り提出し、 その優劣を競う。

この合宿の上位4名は世界大会に進める。

世界大会[編集 | ソースを編集]

未稿

パソコン甲子園[編集 | ソースを編集]

未稿

Google Code Jam[編集 | ソースを編集]

入力をダウンロードして、制限時間内にローカルでそれに対する出力を作成し、出力とソースコードを提出する。 問題の入力がSmallとLargeに分かれており、 Smallは提出するとすぐに正解かどうか分かり、不正解の場合(ペナルティがあるが)再提出もできる。 Largeは提出しても終了まで正解かわからず、制限時間をすぎると提出できなくなる。 正解した入力の分だけ得点が入り、同点の場合は最後に得点を得た提出の時間+誤答ペナルティで順位が付く。

AtCoder[編集 | ソースを編集]

ARCと呼ばれるコンテストでは、90分で4問を解く。 提出するとすぐにジャッジが行われ、結果がわかる。 解いた問題に応じた得点が入り、同点の場合は最後に得点を得た提出の時間+誤答ペナルティの小さい順に順位が付く。

その他、外部主催のコンテストも行われている。

AIZU ONLINE JUDGE/NPCA Judgeでのコンテスト・CodeforcesのACM-ICPC Rules[編集 | ソースを編集]

提出するとすぐにジャッジが行われ、結果がわかる。 正解した問題数の多い順に順位が付き、正解した問題数が同じ場合は 正解した問題を正解するまでにかかった時間の合計+誤答ペナルティの小さい順に順位が付く。

ACM国際大学対抗プログラミングコンテスト国内予選[編集 | ソースを編集]

主に大学生・大学院生向けのコンテスト。

3人一組のチームで戦う。入力をダウンロードし、それに対する出力をローカルで作成し、 出力とソースコードを提出する。結果はすぐにわかり、正解なら次の入力に対し 同じソースコードのプログラムで出力を作成し、同じように提出する。 再び正解ならその問題をクリア(正解)したことになり、得点が入る。

順位は基本的に正解数順であり、正解数が同じチームは 正解した問題全ての正解するまでにかかった時間の合計+誤答ペナルティの小さい順に順位が付く。

TopCoder Marathon Match[編集 | ソースを編集]

制限時間が何日もあり、その中で1問を解く。

問題は最適解が得にくいものであり、 いかに与えられた条件の中でよりよい近似解を出せるプログラムを作れるかを競う。

提出にはサンプルテストとフルテストが用意されており、ローカル向けのビジュアライザが用意されることもある。