JOI本選対策ガイド

目標: 30位以内入賞(Aランク)
本番目標: 310点 / 練習目標: 350点(AI活用時)


競技形式

項目二次予選本選
時間3時間4時間
問題数5問(2025年度から6問)5問
言語複数言語可C++のみ
開催形式オンライン2025年度からオフライン開催

本選Aランク基準点・人数(過去10回分)

年度Aランク基準点Aランク人数
2024/2025第24回306点35名
2023/2024第23回279点28名
2022/2023第22回268点29名
2021/2022第21回300点30名
2020/2021第20回311点17名
2019/2020第19回301点20名
2018/2019第18回219点21名
2017/2018第17回233点20名
2016/2017第16回205点14名
2015/2016第15回241点20名

傾向:

  • 基準点は205〜311点の範囲で年度により変動
  • 直近4年は268〜311点で安定傾向
  • 2021年度以降「高2以下30名を超えない」ルールに変更

問題別難易度レンジ

問題難易度帯AtCoder相当特徴
問題1★5〜6緑〜水色素直な実装・シミュレーション
問題2★6〜7水色〜青典型アルゴリズム応用
問題3★7〜8青〜黄高度なデータ構造・考察
問題4★8〜9黄〜橙複合的な知識が必要
問題5★9〜10橙〜赤最高難度・満点者は極少数

目標設定

本番目標: 310点

問題目標点戦略
問題1100点満点必須(30分以内)
問題2100点満点狙い(45分)
問題360点小課題3-4まで(60分)
問題430点小課題2まで(50分)
問題520点小課題1-2のみ(30分)
合計310点予備15分

練習目標: 350点(AI活用時)

問題目標点戦略
問題1100点満点
問題2100点満点
問題370点小課題4まで
問題450点小課題3まで
問題530点小課題2-3まで
合計350点

本選と二次予選の本質的な違い

二次予選本選
「満点を取る競争」「部分点の積み上げ競争」
難易度5-6を確実に解けばAランク問題5の満点を取れる人はほぼいない
問題1-3満点 + 4-5部分点問題1-2満点 + 3-5で小課題を拾う

小課題の戦略(超重要)

小課題は順番に解く必要がない

本選では小課題の見極めが合否を分ける。

: 問題3の小課題構成が以下の場合

  • 小課題1 (10点): N ≦ 100 → 愚直O(N²)で取れる
  • 小課題2 (15点): 特殊条件あり → 難しい考察が必要
  • 小課題3 (25点): N ≦ 2000 → 愚直O(N²)で取れる
  • 小課題4 (50点): 追加制約なし → 高速化が必要

この場合、小課題2を飛ばして小課題1と3を先に取るのが正解。

見極めのポイント

  1. 制約を見る: N ≦ 500 なら O(N²) が通る可能性が高い
  2. 特殊条件を見る: 「全て同じ値」「木構造」などは別解法が必要なことが多い
  3. 配点を見る: 10点の小課題に30分かけるより、25点の小課題を優先

罠に注意

  • 「N ≦ 500 だから愚直でOK」と思ったら定数倍で間に合わない
  • 特殊ケース(N=1、空配列、自己ループ)を見落としてWA
  • 小課題2の解法が小課題3に流用できない構造になっている

本選頻出アルゴリズム

アルゴリズム頻度出題問題例
Lazy Segment Tree毎年郵便局、ダンジョン3
ダブリング / LCA毎年キャットエクササイズ、郵便局
累積max/min + 二分探索毎年色塗り、勇者ビ太郎2
Functional Graph2年に1回郵便局
bit DP2年に1回長いだけのネクタイ2
拡張グラフDijkstra2年に1回ミ・テレフェリコ
座標圧縮毎年多数
円環の2倍化頻出勇者ビ太郎2、室温
差分配列・imos法頻出家庭菜園4

本選の心構え

□ 問題1を確実に取る(30分以内)
□ 問題5は小課題1-2だけでOK
□ 「満点」より「合計点最大化」
□ 小課題は順番に解かなくていい(見極めが大事)
□ 詰まったら別の問題へ
□ 残り30分で未提出の小課題を片付ける