MISW.github.io

競プロをやろう。

まずは形から入る - 登録 -

まずは国内大手の競技プログラミングコンテストAtcoderに登録しましょう!フォームに従って入力していけば、登録できます。

新規登録 -Atcoder-

問題を解いてみよう!

プログラミング完全初心者の方へ

Atcoder社が用意しているプログラミングの超入門講座があります。ここさえ読めば、問題を解いていけばプログラミングの本質である、変数、条件分岐、反復処理などを一通り学習できると思います。

https://atcoder.jp/contests/APG4b

競技プログラミングは基本的にあらゆる言語が対応していますが、この講座で開設されている言語はC++です。この言語は処理速度が速く、競技プログラミングによく使われています。Atcoderの問題の解説もだいたいこの言語かpythonで説明されています。C言語との後方互換が利いていて、C言語を知っている方はほぼC言語な感じで書くこともできます。

必ずC++でやらないといけないわけではないので、今新しく学んでいる言語があればそれでやってみるのもよいです。

プログラミングをちょっと触ったことのある方へ

↑の項目で基本をちょっと学んだ方や、もともとプログラミングをやっていた方はぜひ実際に問題を解いてみましょう!自分の使える言語で解いてみてください!

Atcoderの開催中のコンテストや開催前のコンテストを見て、開催時間にコンテストに登録/回答を提出しましょう。基本的には難易度が低い順にABC(Atcoder Beginners Contest)/ARC(Atcoder Regular Contest)/AGC(Atcoder Grand Contest)の定期的に開催されるコンテストと、別の企業が運営する企業コンというものがあります。初めての方はとりあえず直近のABC辺りのコンテストから参加していくとよいでしょう。

https://atcoder.jp/

コンテスト中は、SNSなどに問題に関係あること(順位表だけからは分からない情報)を投稿することはやっちゃいけないことになっているので、そこだけ注意しましょう。

参考文献 : https://atcoder.jp/posts/262

コンテストをやっていくと自分のレートと呼ばれる値が変動していきます。レートは右上の自分の名前/マイプロフィールで確認することができます。レートが上がるにつれて、自分の名前の色が灰/茶/緑/水色/青/黄/橙/赤の順で変化していきます。このレートや色のグレードを上げていくのが競技プログラミングの一つの醍醐味になっています。

提出までの流れ

基本的には各コンテストの提出タブか問題タブの中にあるフォームにコードを張り付けて提出します。

提出すると提出一覧/自分の提出から自分の提出が正解したかどうかを見ることができます。

結果のところに提出した問題の状態が表示されます。状態にはCE(コンパイルエラー),RE(実行時エラー),WA(Wrong Answer),TLE(コード実行時間超過),AC(Acceptedつまり正解)などがあります。

コンテストでは提出した問題の点数、問題の提出時間等によって最終的な順位が決まり、そこからレートの変動率が決まります。

WAなどを出すと、その問題の提出した時間がプラス5分されてしまうというペナルティがあるのでよくテストをしてからコードを提出しましょう。

コードを書く環境

環境がすぐに用意できない場合は、上のタブのコードテストのところにコードを書き、標準入力を与えると、コンパイルして実行してくれます。ここでコードを書いて、ちゃんと正解できるか確認してからコピペして提出しましょう。

慣れてきたら、自分のパソコンのローカル環境に使用する言語の環境をいれると楽です。環境構築はググるか人に聞くかして頑張ってください….

俺は”“今”“コンテストがやりたいんだ

Atcoder Virtual Contestという非公式のサイトが存在します。そこでは自分でいくらかAtcoderの問題を選んでコンテストを立てられるというサービスになっています。

まずは登録が別に必要になるので、登録しましょう。

https://not-522.appspot.com/register

トップページの開催中のコンテストというところは今現在開催中のコンテストです。よくW大学まわりの競プロer様たちもコンテストを開いているので、練習がてら解いてみると楽しいです。

https://not-522.appspot.com/

(※2020/08/09 追記)

2020年5月16日を持ちましてAtCoder Virtual Contestはサービスを終了したそうです。しかし、代わりにAtCoder ProblemsというサイトにVirtual Contest機能があり、非常に便利です。

github認証などが必要になりますが、自分でバーチャルコンテストを立てたり、誰かの立てたバーチャルコンテストに参加したりすることができます。現在開催中のバーチャルコンテスト一覧はRunning Contestに、開催予定のバーチャルコンテスト一覧はUpcoming Contestにあります。

他にも最近、AtCoder公式サイトにバーチャルコンテスト機能がつきました。

バーチャル参加ボタンを押すことで、本番さながらにコンテストの練習ができます。ぜひ活用してみてください!

こちらも是非参考に

弊サークルの新歓ブログリレーで53代白君が競技プログラミングについて語っているので見てみてください。他の競技プログラミングサイトや、便利なツールについて解説しています。

https://blog.misw.jp/entry/2019/04/07/000000