準備#
コンテストへの参加には準備が必要。
AtCoderアカウントをつくる#
プロフィールの「所属」は
電子電脳技術研究会
を含めておくと便利
AJLに参加登録する#
学校コードは
C113110000041
↑コピペ用
拡張機能をいれる#
を見て好きなの入れると良い環境構築する#
AtCoderについて#
AtCoderは競技プログラミングのコンテストを主催する会社。 ABC、ARC、AGC、AHCの4種類のコンテストが存在するが、我々が参加するのはABCとAHC。
レートと色#
AtCoderにはレートが存在する。そのレートに応じてランク分けされていて、「◯色」と表現する。
レート | 色 | 分布 |
---|---|---|
0〜 | 灰色 | 上位100.000% |
400〜 | 茶色 | 上位28.462% |
800〜 | 緑色 | 上位16.022% |
1200〜 | 水色 | 上位7.895% |
1600〜 | 青色 | 上位3.609% |
2000〜 | 黄色 | 上位1.513% |
2400〜 | 橙色 | 上位0.396% |
2800〜 | 赤色 | 上位0.161% |
ちなみに、灰〜青は寒色、黄〜赤は暖色と言われる。
各コンテストへの参加方法#
https://atcoder.jp/homeの「予定されたコンテスト」から参加したいコンテストを探し、参加登録する。
企業主催のコンテストの場合は、情報をいくつか入力しないといけない。
その後、「Reted参加登録」「Unrated参加登録」の2つのボタンが表示される。
前者はレート変動あり、後者はなし。具体的には疲れてる時とかはアンレを選択する。開始5分を過ぎても選択していない場合、強制的にアンレになる。
ABC(AtCoder Beginner Contest)#
レート2000までの人のレートが変動するコンテスト
毎週土曜21時〜22時40分
より多くの問題をより早く解けばパフォーマンスが上がる。AJL(アルゴリズム部門)のスコアにも反映される
AからGまで7問あり、基本的にはA〜Cをある程度高速に解ければ茶パフォが出る。問題がムズければABだけで茶パフォ出ることも。
AHC(AtCoder Heuristic Contest)#
一風変わった形式で、1つの問題の答えをより正確に求めればパフォーマンスが上がる。AJL(ヒューリスティック部門)のスコアにも反映される それなりにヒューステリック用の勉強をしてこないと大幅な点数改善は見込めない。ので、
- テストコードがある場合はそれをコピペ
- ない場合は空白出力 を必ず試す。(←ここ重要)
AJL(AtCoder Junior League)#
学校対抗リーグ
学校ランキング/学年内の個人ランキングが存在
表彰+キューブ(かっこいい)もらえるのでやった方が良い
アルゴリズム部門 | ヒューリスティック部門 | |
---|---|---|
合計スコアにカウントされる数 | 上位6個 | 上位3個 |
表彰圏内 | 20位まで | 10位まで |
精進#
しょうじん【精進】
《名・ス自》
1.雑念を去り一心に仏道修行すること。
2.身をきよめ行いを慎むこと。
3.競技プログラミングにおいて、問題演習などを通じて実力を向上させること。
Blueberry式初心者向けフローチャートに目を通しておくと良い
ちなみにBlueberry氏は電電での競プロの流行のきっかけとなった元部員。
AtCoder Problems#
このサイトでは、自分が解いた問題を可視化したり、ライバルと比較したり、バーチャルコンテストを立てたりすることができる。まず、自分の名前をUserIDに入力してみよう。すると、解いた問題に色がつくのが分かる。
問題の左の円の部分にカーソルを合わせるとDifficultyが表示される。これは例えばDifficultyが500の場合、レート500の人の半分ぐらいがとけるあ、ということを意味する。レート500は茶色なので、この問題は「茶Diff」である。
AtCoder Novisteps#
「問題一覧」から難易度別の問題に挑める。最近できたサイトで、解法別の問題もある。
AOJ/AtCoder-JOI#
情報オリンピックの過去問を検索したり自分が解いていない問題を確認したりできる。
プログラミング言語について#
アルゴリズムの勉強を始める前に、まずはどれか1つの言語で基本的な文法が使えるようになっている必要がある。それに役立つサイトなどをここでは紹介する
どの言語を選ぶべき?#
競プロでは、主にPythonとC++の2つの言語が用いられることが多い。
Python | C++ | |
---|---|---|
速度 | くっそ遅い | めっちゃ速い |
学習コスト | 低い | 高い |
コード長 | 短い | 長い |
こんな感じで、基本的にはC++の方が競プロ向けではあるが、Pythonには簡単に学べる/書けるというメリットもある。 ということは下のどれかを選ぶことになる
- 簡単に習得できるPythonを時間制限に悩まされながらずっと使う
Pythonを使っている暖色コーダーもいるにはいる - 最初はPythonを学び、時間制限に困るようになったらC++
バイリンガルになれば簡単な問題はPython/難しい問題はC++と使い分けられる(早解きに有利) - 難しいが1度習得すればずっと使えるC++を最初から
A,B問題の早解きが少し不利にはなる。
おすすめは一番下
Pythonを学ぶ#
APG4bPython#
AtCoder公式の教材。
AtCoderで始めるPython入門#
Pythonの基本的な構文などを学べる。これさえあればA問題は大体解ける。
C++を学ぶ#
APG4b#
AtCoder公式の教材。
その他の学習教材#
AtCoder Beginners Selection#
ガチ初心者向けの問題が集められている。
競プロ典型90問#
ABC300〜600点程度の問題が集められている。E869120さん企画。
AtCoder Library Practice Contest#
C++でUnionfindなどを提供するAtCoderLibraryの練習コン。
EDPC / DP まとめコンテスト#
DP(動的計画法)を学びたい人におすすめ。Cまでは解けるようにしておきたい。
便利なサイト#
AtCoder Clans#
AtCoder関連サービスを纏めたリンク集。正直ここより網羅されている。
AtCoder Replay (β)#
AJL Predicter#
AJLの成績を、コンテスト中/コンテスト直後でも確認することができる。未参加のユーザをランキング表に追加できる機能も。
C++メモ 関数/モジュール#
C++で知っておくべき関数などがまとめられている。
AtCoder Phrase Search#
過去問の解説に出てくる語句を検索できる。
AtCoder Companions#
自分の不正解コードと近いコードを検索し、正解コードとの差分を表示できる。 「何が違うのか分からん」みたいな時に便利。
AtCoder Type Checker#
「多く解くタイプ」or「早く解くタイプ」を判定してくれる。
AtCoder Graphs β#
各コンテストの現在のレートに対する寄与率などを表示できる。