Contents
AtCoder の公式サイトでのアカウント取得手順
AtCoder に参加するためにまず必要なのは、公式サイト上でのユーザー登録です。メール認証を通すだけでコンテストへの応募や提出が可能になるので、最初のハードルとしては非常に低いと言えます。このセクションでは、登録手順と失敗しやすいポイントをわかりやすく解説します。
手順概要
以下の流れでアカウント作成を行います。各ステップごとに注意点を添えているので、途中でつまずいた場合は該当箇所を確認してください。
-
公式ページへアクセス
ブラウザでhttps://atcoder.jpを開き、右上の「Sign up」ボタンをクリックします。 -
メールアドレス入力
任意の有効なメールアドレスを入力し、「Send verification email」を押すだけです。 -
認証メールの確認
受信したメールに記載された URL をクリックして認証を完了させます。迷惑メールフォルダに入っていることがあるので、必ずチェックしてください。 -
ユーザー名・パスワード設定
- ユーザー名は半角英数字とアンダーバーのみで、30 文字以内です。
-
パスワードは最低 8 文字以上で、大文字・小文字・数字を必ず組み合わせます。
-
利用規約への同意
「I agree to the Terms of Service」にチェックし、登録ボタンを押せば完了です。
ポイント:認証メールが届かない場合は、メールプロバイダー側のブロック設定やドメインホワイトリストを確認すると解決することが多いです。
開発環境(IDE・コンパイラ)の構築方法
競技プログラミングで最も利用される言語は C++ と Python です。本節では、AtCoder が現在採用しているコンパイラ/インタプリタのバージョン情報と、汎用的に使える開発環境の設定例を示します。
使用言語・バージョン概要
| 言語 | AtCoder で使用されているバージョン | ローカルで推奨するインストール形態 |
|---|---|---|
| C++ | GCC 11 系(g++ -std=gnu++17 がデフォルト) |
OS のパッケージマネージャーまたは公式バイナリを利用 |
| Python | CPython 3.10 系(python3.10 が標準) |
pyenv、公式インストーラ、あるいはディストリビューションのパッケージで導入 |
注意:記事執筆時点では AtCoder のコンパイラは GCC 11 系、Python は 3.10 系です。将来的に変更される可能性があるため、公式ページの「Language」タブで常に最新情報を確認してください。
C++ 環境のインストール例
- Windows
- MSYS2 を導入し、
pacman -S mingw-w64-x86_64-gccで GCC 11 系を取得。 - macOS
- Homebrew (
brew install gcc@11) を使用してgcc-11をインストール。 - Linux (Ubuntu/Debian 系)
sudo apt update && sudo apt install build-essential g++-11とすれば GCC 11 が利用可能です。
Python 環境のインストール例
| OS | 推奨インストール手段 |
|---|---|
| Windows | Microsoft Store の「Python 3.10」または公式インストーラ(Add to PATH を必ず有効化) |
| macOS | Homebrew (brew install python@3.10) |
| Linux | sudo apt install python3.10(Ubuntu 22.04 以降) |
エディタの設定ポイント(VS Code・他エディタ共通)
共通的に意識すべきこと
- ビルドコマンドは AtCoder と同一:ローカルで
g++ -std=gnu++17、python3.10を使用すると、提出時の実行結果と差異が出にくくなります。 - 拡張機能だけをインストール:C/C++ 用の「C/C++」や Python 用の「Python」など、公式が提供するものに限定すれば環境依存エラーを防げます。
- 設定はプロジェクト単位で上書き:
settings.jsonをワークスペースフォルダーに置くと、他のプロジェクトへの影響を最小限に抑えられます。
VS Code での簡易設定例(あくまで参考)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
{ // C++ のビルド・実行はタスクとして定義し、必要に応じて変更してください "tasks": [ { "label": "build and run (C++)", "type": "shell", "command": "g++ -std=gnu++17 ${file} -o ${fileDirname}/${fileBasenameNoExtension} && ${fileDirname}/${fileBasenameNoExtension}", "group": "build" }, { "label": "run (Python)", "type": "shell", "command": "python3.10 ${relativeFile}" } ], // デバッグ設定は各自の環境に合わせて調整してください "launch": { "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}" } ] } } |
ポイント:上記は「例示」なので、
g++のパスが異なる場合やpython3.10が別名の場合は適宜書き換えてください。
問題文の読み取りと提出フロー
AtCoder の問題は決まった構成で提供されます。各セクションを正しく把握したうえでローカルテストを行い、最後に提出する流れが基本です。この章では、効率的な読解手順と安全な提出手順をまとめます。
問題文の主要セクション
- Problem Statement:問題の概要と求められる出力。
- Constraints:入力サイズや数値範囲。ここから許容される計算量が推測できる。
- Input Format:標準入力にどのような形でデータが渡されるかを正確に把握する。
- Output Format:出力の形式(改行・空白の有無)を確認。
- Sample Input / Output:サンプルは必ず手計算し、期待通りに動くか自分で検証する。
ポイント:制約が
1 ≤ N ≤ 2×10⁵のときは、O(N log N) 程度のアルゴリズムを目安に設計すると安全です。
ローカルテストから提出までのフロー
| 手順 | 内容 |
|---|---|
| 1. サンプル入力で実行 | 問題文のサンプルケースをそのままプログラムに流し込み、期待通りの出力が得られるか確認。 |
| 2. 自作テストケース作成 | エッジケース(最小・最大・特殊パターン)を自分で作り、ローカルで検証する。 |
| 3. 提出ページへ遷移 | コンテスト画面から対象問題の「Submit」ボタンをクリック。 |
| 4. 言語選択とコード貼り付け | ドロップダウンで C++ (GNU‑C++17) または Python (3.10) を選び、エディタにコードを貼る。 |
| 5. 提出実行 | 「Submit」→「Confirm」で送信し、ステータスが WJ(ジャッジ中)になるのを待つ。 |
| 6. 判定結果確認 | AC・WA・TLE・MLE・CE が表示されるので、エラーメッセージは必ず読む。 |
ポイント:
Compilation Errorが出た場合はローカルと同じコンパイルオプションでビルドできているか再確認しましょう。
初心者向け ABC の活用法と学習ロードマップ
ABC(AtCoder Beginner Contest)は、競技プログラミング初心者が最初に挑戦すべき大会です。この章では、スケジュール感・学習リソース・実践的な練習方法を体系化します。
ABC の開催概要と参加手順
- 開催頻度:毎週土曜 21:00 JST に開始し、約2時間で3問が出題されます。
- エントリー方法:公式サイトのコンテスト一覧から対象 ABC を選び、「参加」ボタンをクリックするだけです(事前登録は不要)。
公式チュートリアルと AtCoder Library(ACL)の基本利用例
AtCoder の「Learn」ページにある ABC 入門 は、問題の読み方・基礎アルゴリズム・コードテンプレートを動画とともに解説しています。また、ACL を使うことで高度なデータ構造をヘッダー一つで利用可能です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <atcoder/all> using namespace atcoder; // 例: Fenwick Tree(BIT)による累積和 int main() { int N; std::cin >> N; fenwick_tree<int> ft(N); for (int i = 0; i < N; ++i) { int x; std::cin >> x; ft.add(i, x); } // prefix sum of first k elements std::cout << ft.sum(0, N) << '\n'; } |
| ACL コンポーネント | 主な用途 |
|---|---|
modint |
MOD 演算(例:998244353) |
fenwick_tree |
順序統計・累積和 |
segtree |
区間クエリ/更新 |
dsu |
合併集合(Union‑Find) |
ローカルテスト・デバッグの実践的コツ
- 入力ファイル作成
bash
cat > input.txt << 'EOF'
5
1 2 3 4 5
EOF - 実行コマンド(OS に合わせて)
- C++:
g++ -std=gnu++17 main.cpp && ./a.out < input.txt > output.txt -
Python:
python3.10 main.py < input.txt > output.txt -
差分確認
bash
diff -u expected.txt output.txt - 改行コードの統一:Windows で作成したテキストは LF に変換しておくと、提出後の WA を防げます。
よくある失敗例と回避策
| エラー | 主な原因 | 回避策 |
|---|---|---|
| TLE(時間超過) | O(N²) アルゴリズムを大規模入力で実装 | 制約から期待計算量を見積もり、ソート・二分探索などに置き換える |
| MLE(メモリ超過) | 不要な巨大配列や vector<vector<int>> の過剰使用 |
必要最小限の型 (int vs long long) と reserve でメモリ確保量を削減 |
| WA(出力不一致) | 改行忘れ・余計な空白 | 出力は必ず cout << ans << '\n';、print(ans) のみで統一 |
| CE(コンパイルエラー) | AtCoder 未提供のヘッダーや C++20 機能使用 | 標準ライブラリと ACL だけに留め、-std=gnu++17 に合わせて記述 |
次のステップ:中級者向け教材・書籍・オンライン講座
ABC をクリアしたら、アルゴリズムの幅を広げることが次の目標です。ここでは、書籍・動画・問題集といった代表的な学習リソースをレベル別に整理しました。
書籍(実装と理論をバランス良く学べる)
| 書名 | 著者・出版社 | 推奨読者層 | 内容のハイライト |
|---|---|---|---|
| 競技プログラミングの鉄則 | 井上 大輔(技術評論社) | 初心者〜中級者 | 基本アルゴリズムとコード最適化テクニックを実例付きで解説 |
| AtCoder 入門 | AtCoder 公式(KADOKAWA) | ABC 後のステップアップ | ACL の応用、過去問徹底分析、ARC/AGC 向け戦略 |
オンライン講座(ハンズオン重視)
- Progate 「競技プログラミング基礎」
C++ と Python の文法復習から始め、簡単な問題を解きながら実装力を養います。 - Udemy 「AtCoder 上位入門」
数論・グラフ・文字列アルゴリズムといった上位コンテストで頻出するテーマを動画で学び、演習課題で定着させます。
問題集・プラットフォーム(実戦練習に最適)
| プラットフォーム | 特徴 |
|---|---|
| AtCoder Problems (https://kenkoooo.com/atcoder) | 問題をレーティングやタグで絞り込み、解答履歴と統計が見える化される |
| yukicoder | 日本語で書かれた中規模問題が多数。ACL が使えない代わりに標準ライブラリだけで挑戦できる |
| Codeforces(日本語翻訳あり) | 国際的な難易度上位のコンテストを経験したい人向け。時間制限が厳しいため高速実装力が身につく |
学習プランの立て方
- 目的設定 – アルゴリズム理論を深めたいか、実装スピードを上げたいかで教材を選ぶ。
- 段階的に難易度を上げる – ABC 300〜400 → ARC A/B → AGC C/D の順に挑戦すると、自然と必要な知識が増える。
- 復習ノートの活用 – 解いた問題は必ず「解法メモ」「失敗ポイント」をまとめ、同様パターンが出た際にすぐ参照できるようにする。
まとめ
- アカウント取得 はメール認証とユーザー名設定だけで完了し、数分で開始できます。
- 開発環境 は GCC 11 と Python 3.10 をベースにし、ビルドコマンドを AtCoder と同一に揃えることで提出時の不整合を防げます。
- 問題文の読み取り では制約・入出力形式を正確に把握し、ローカルテストでサンプルと自作ケースを必ず検証してから提出します。
- ABC の活用 と ACL の基本利用 に慣れたら、段階的に難易度を上げつつ書籍・講座・問題集で実戦力を蓄積しましょう。
- 失敗例の対策(TLE・MLE・WA・CE)を常に意識し、コードレビューとテストケース増強を習慣化すれば、コンテストでの安定した成績が期待できます。
これらの手順とポイントを身につけることで、AtCoder 入門から中級者へのステップアップがスムーズに進み、競技プログラミングの楽しさを存分に味わえるようになるでしょう。