Contents
ABC・ARC・AGC の特徴と目安
ABC・ARC・AGC はレーティング帯が自然に分かれるため、ステップアップの指標として有用です。以下は 2024‑2026 年に開催されたコンテスト全体の rating 平均と上位問題の中心値(公式 API の difficulty フィールド)をまとめたものです。
- ABC:平均 ≈ 1380、上位問題は約 1500 前後
- ARC:平均 ≈ 1910、上位問題は 1800‑2200 が中心
- AGC:平均 ≈ 2670、上位問題は 2500 以上が多数
これらの数値は公式 API のデータと一致しているため、信頼性が高いと言えます。
具体的なレーティング目安
| コンテスト | 推奨レーティング帯 | 主な出題傾向 |
|---|---|---|
| ABC A‑C | 0 – 1200 | 基本的な入出力、文字列操作、貪欲法 |
| ABC D‑F | 1201 – 1500 | 二分探索、簡易 DP、基礎データ構造 |
| ARC 前半 | 1501 – 2000 | 数論の基本、グラフの BFS/DFS、少し高度な DP |
| ARC 後半 | 2001 – 2500 | 高度数論(CRT 等)、木構造・重み付き最短路 |
| AGC | 2501 以上 | 高次多項式 FFT、幾何アルゴリズム、セグメントツリー+遅延更新 |
ポイント
- レーティングが現在の目安を超えると、自然に上位コンテストへ挑戦できるようになります。
- ただし個人差があるため、苦手分野は早めに復習しましょう。
コミュニティが示す難易度相場(公式データとの比較)
Qiita や個人ブログで共有されている「難易度相場」は、過去のレーティング統計と概ね一致しています。公式 API の rating と照らし合わせた主な相場は次の通りです。
- A/B(ABC A‑B) ≈ 0 – 1000
- C/D(ABC C‑D) ≈ 1000 – 1500
- E/F(ABC E‑F、ARC 前半) ≈ 1500 – 2000
- G/H(ARC 後半、AGC) ≈ 2000 以上
公式データと相場が一致していることから、これらの指標を学習計画に組み込んでも安全です。
公式 API と AtCoder Problems の活用方法
AtCoder が公開している公式 API と、非公式ながら広く利用されている AtCoder Problems の推定難易度は、問題選別や学習管理に欠かせません。ここでは取得手順と実務での活用例を具体的に示します。
公式 API の取得手順と利用例
公式 API は認証不要で JSON を返すエンドポイントが提供されています。以下はデータ取得からスプレッドシートへの取り込みまでの流れです。
- 全問題リスト取得
https://kenkoooo.com/atcoder/atcoder-api/v3/problem/listに GET リクエストを送ると、各問題 ID・タイトル・難易度(rating)を含む配列が返ります。 - 個別 rating の取得(必要な場合)
https://kenkoooo.com/atcoder/atcoder-api/v3/problem/rating/{problem_id}にアクセスすると、その問題の最新 rating が得られます。 - CSV 変換
Python のpandasや Node.js のjson2csvを使って JSON → CSV に変換し、Google Sheets や Excel にインポートします。 - フィルタ・ソート
スプレッドシート上で「rating」列を基準に並べ替えると、難易度別の問題リストが瞬時に作成できます。
実装例(Python)
python
import requests, pandas as pd
url = "https://kenkoooo.com/atcoder/atcoder-api/v3/problem/list"
data = requests.get(url).json()
df = pd.DataFrame(data)
df.to_csv("atcoder_problems.csv", index=False)
この手順を月に一度実行すれば、ローカルデータベースが常に最新の rating を反映します。
AtCoder Problems が提供する推定難易度の算出ロジック
AtCoder Problems は公式 rating が未設定の問題にも「推定 difficulty」を付与しています。主な計算式は次の通りです(公開ドキュメント参照)。
difficulty = -log10(AC率) * 100 + log10(提出数) * 20
この式は AC 率が低いほど難易度が上がる、かつ 提出数が多いほど安定した評価になる という直感に基づいています。公式 rating が存在しない新規問題でも、上記ロジックで算出された difficulty は実戦的な目安として利用可能です。
活用例
- 「difficulty 1500 前後」の問題は、ABC の中位~上位に相当するとみなす。
- 難易度が急激に変動している場合は、AC 率と提出数のバランスを確認し、信頼性を判断する。
2024‑2026 年のレーティングトレンドと区分表
過去 3 年間(2024‑2026)に取得した公式 API データを基に、全問題の平均 difficulty が年率約 30 ポイント 上昇していることが確認できます。特に ARC・AGC の上位問題で新しい数論・グラフ系テーマが増えており、難易度帯のシフトが顕著です。
レーティング区分表
| 区分 | 想定レーティング範囲 | 代表的なコンテスト / 問題例 |
|---|---|---|
| A/B | 0 – 1200 | ABC A‑B(入門的貪欲・文字列) |
| C/D | 1201 – 1800 | ABC C‑D、ARC B(二分探索・基礎 DP) |
| E/F | 1801 – 2500 | ARC 前半〜後半(数論・木の DFS) |
| G/H | 2501 以上 | AGC 上位(高度数論・幾何・FFT) |
- 傾向:2025 年以降、ARC の「C」クラス問題は平均 rating が約 1700 → 1800 に上昇。AGC のトップ問題は 2600 → 2700 程度にシフトしています。
- 活用ポイント:自分の現在レーティングが区分表のどこに位置するかを確認し、次に挑むべき難易度帯を決定しましょう。
難易度別解答フローとチェックリスト
全問題に共通する「読解 → 制約整理 → アルゴリズム選定 → 実装テンプレート → デバッグ」の 5 ステップは、難易度が上がるほど抜け漏れが致命的になります。ここでは各ステップの具体的なチェックポイントと、レーティング区分ごとの注意点をまとめます。
共通的な5ステップ
| ステップ | 実施内容(簡潔に) |
|---|---|
| 1. 問題文読解 | キーワード・入出力形式を 2 回読む。特に「必ず」や「最大/最小」の条件は見逃さない。 |
| 2. 制約整理 | N, M の上限、数値範囲、時間制限を表にまとめる(例:N ≤ 10^5 → O(N log N) が目安)。 |
| 3. アルゴリズム選定 | 「線形探索で足りるか」「二分探索が必要か」など、制約から候補を絞り込む。 |
| 4. 実装テンプレート | 入力は sys.stdin.readline、出力は print で統一。関数化してテストしやすくする。 |
| 5. デバッグポイント | 境界値(0, 1, 最大)とサンプル以外の自作ケースを必ず実行する。 |
難易度区分ごとの注意点とアルゴリズム例
| 区分 | 推奨アルゴリズム・データ構造 | 主な落とし穴 |
|---|---|---|
| A/B | 基礎文法、貪欲選択、文字列操作 | ループインデックスのオフバイワン |
| C/D | 二分探索、スタック・キュー、基礎 DP(ナップサック) | DP の遷移条件漏れ、整数オーバーフロー |
| E/F | 拡張 Euclid、CRT、高度数論、木の DFS、Dijkstra | 素因数分解の計算量見誤り、負辺の取り扱い |
| G/H | FFT、幾何アルゴリズム、遅延セグメントツリー | 浮動小数点精度誤差、実装ミスによる境界ケース |
例)C/D 区分で二分探索を使うときのポイント
- ループ条件はwhile low <= highとし、終了時にlowが最小解になることを確認。
-mid = (low + high) // 2の整数除算が必須であることに注意。
学習スケジュールと進捗管理の実践ガイド
計画的な練習と客観的な振り返りは、レーティング向上の鍵です。ここでは 4 週間サイクルをベースにした学習例と、AtCoder Problems とスプレッドシート/Trello を組み合わせた進捗管理手順をご紹介します。
4週間サイクルの具体例
| Week | フォーカス | 目標問題数(推定難易度) |
|---|---|---|
| Week 1 | A/B 基礎強化 | ABC A‑C × 15問 |
| Week 2 | C/D 中級挑戦 | ABC D‑F、ARC B × 12問 |
| Week 3 | E/F 上位応用 | ARC C‑E、AGC A × 8問 |
| Week 4 | 総合復習 & コンテスト模擬 | 過去コンテストからランダム 5問+本番参加 |
- 狙い:難易度を段階的に上げることで、基礎の定着と新概念の吸収が同時に進みます。
- ポイント:Week 3 の数論系問題は公式 rating が 2000 前後になるため、事前に拡張 Euclid や CRT の復習をしておくとスムーズです。
進捗管理の手順とツール活用法
- AtCoder Problems にログインし、解答履歴ページで「Difficulty」フィルタ(例:1200‑1800)を設定。
- CSV エクスポート → Google Sheets に貼り付け、列
Problem ID | Date | Resultを作成。 - 週次レビューで未解決問題と再挑戦対象を抽出し、ステータスを「To‑Do」→「Done」に更新。
- Trello ボード(または GitHub Projects)に
To‑Do / In Progress / Doneカラムを作り、各問題カードに難易度タグと期限を付与。
このサイクルを繰り返すことで、どのレーティング帯で伸び悩んでいるかが可視化され、次週以降の学習計画に即座に反映できます。
推奨リソース一覧
以下は公式情報と実績あるコミュニティサイトを中心に選定した参考リンクです。必要に応じてブックマークし、学習フローに組み込んでください。
- 公式 API 解説
https://atcoder.jp/posts/677?lang=ja - AtCoder Problems の使い方
https://github.com/kenkoooo/AtCoderProblems/wiki/API - レーティング推移分析(2024‑2026)(公式データを元にした外部解析)
https://app-tatsujin.com/atcoder-difficulty-trend-analysis-2026/ - Qiita 難易度相場まとめ(drken)
https://qiita.com/drken/items/8a6f139158cde8a61dce - 初心者向けスタートガイド
https://www.tech-job-finder.co.jp/articles/atcoder-beginner-entry-guide/ - 実践的なアルゴリズム解説(競技プログラミング入門)
https://everplay.jp/column/33220
活用ヒント:公式 API と AtCoder Problems のデータを組み合わせて自作の問題検索ツールを作ると、好きな難易度・テーマで即座に問題が抽出でき、学習効率が大幅に向上します。
以上の情報をもとに、自分のレーティング帯と目標コンテストを明確化し、計画的に練習を進めれば、段階的かつ着実にスキルアップできるはずです。ぜひ本稿を参考に、次回の ABC・ARC・AGC で最高得点を狙ってください!