模擬テスト — paiza B〜S・AtCoder ABC相当の実戦10問
この章の目次開く
いよいよ卒業試験です。この章には模擬問題を10問用意しました。前半5問がpaiza B〜Sランク相当、後半5問がAtCoder ABC C〜D相当です。
取り組み方
- 1問30分の制限時間を設ける(本番相当の負荷)
- まず第12章の5ステップで方針を立ててから書く
- 詰まったら「ヒント(章)」を開いて該当章を復習 → 再挑戦
- 解けても解けなくても、「シグナルは何だったか」を一言メモする
環境構築がまだの人は付録Aを先に済ませてください。
学習者10問か…。よし、時間計ってやってみる!
前半: paiza B〜S相当
問1 出席簿の集計(B相当)
N行のログが与えられる。各行は「学籍番号 出席/欠席」の形式。3回以上欠席した学生の学籍番号を、初めて3回目の欠席をした順に出力せよ。(N ≤ 10^5)
ヒント: 第4章 方針: Mapで学籍番号→欠席回数をカウント。3に達した瞬間に結果へpush。「達した順」という条件が、後からのソートではなくその場で記録を要求している——仕様の読み落としを誘う、paizaらしい設計。
問2 混雑する時間帯(B〜A相当)
店にN人の客が来る。i番目の客の入店時刻と退店時刻が与えられる。同時に店内にいた人数の最大値を求めよ。(N ≤ 10^5、時刻 ≤ 10^9)
ヒント: 第12章のケーススタディ 方針: 入店+1/退店-1のイベントソート。第12章で実演した問題の骨格そのまま。初見でも「区間の重なり最大」に要約できたかがポイント。
問3 商品のセット販売(A相当)
N個の商品の価格が与えられる。2個セットにして売るとき、セットの合計価格がすべてK円以下になるように最大何セット作れるか。(N ≤ 10^5)
ヒント: 第3章・第9章 方針: ソートして両端から二つのポインタ。「最小と最大を組ませ、無理なら最大を諦める」貪欲。正当性は交換論法で確認(最大の商品と組めるのは最小の商品が一番有利)。
問4 会議室の予約(A相当)
N件の会議予約(開始・終了時刻)から、時間が重ならないように最大何件受け入れられるか。(N ≤ 10^5)
ヒント: 第9章 方針: 区間スケジューリングそのもの。終了時刻ソート→1周。「開始時刻順に選ぶ」と書いてWAになるのが定番の罠。
問5 予算内の買い物プラン(S相当)
N個の商品(価格P_i、満足度V_i)から、合計W円以内で満足度の合計を最大化せよ。(N ≤ 100、W ≤ 10^5)
ヒント: 第10章 方針: ナップサックDP。O(NW) = 10^7。paiza Sランクの代表的な出題形式で、「DPを知っているか」がランクの分水嶺になる。
後半: AtCoder ABC C〜D相当
問6 カードの選び方(C相当)
N枚のカードに数が書かれている。何枚か選んで合計をちょうどXにできるか判定せよ。(N ≤ 20)
ヒント: 第7章 方針: N ≤ 20が合図のbit全探索。2^20 × 20 ≈ 2×10^7で間に合う。Nが100ならDP(部分和)に切り替える——制約で解法が変わる好例。
問7 木の部屋数(C相当)
N個の部屋とN-1本の廊下からなる建物(木構造)。部屋1から各部屋への最短の廊下数を求めよ。(N ≤ 10^5)
ヒント: 第6章 方針: 重みなし最短距離=BFS一択。隣接リスト化→添字方式キュー→dist配列。テンプレートを写経レベルで再現できるかの確認問題。
問8 丸太切り(D相当)
N本の丸太からK本の同じ長さの棒を切り出す。切り出せる棒の最大の長さを求めよ(小数点以下切り捨て)。(N, K ≤ 10^5、長さ ≤ 10^9)
ヒント: 第8章 方針: 第8章で解説した「答えで二分探索」。判定問題「長さLでK本作れるか」+ 単調性。10^9という制約が「答えの空間を二分探索せよ」のサイン。
問9 島と橋(D相当)
N個の島に順番にQ本の橋がかかっていく。各橋がかかった**直後の「島のグループ数」**を毎回出力せよ。(N, Q ≤ 10^5)
ヒント: 第11章 方針: Union-Find。グループ数はN から開始し、unionで実際に合併が起きたときだけ-1する(同じグループ同士の橋では減らない——ここが罠)。
問10 お菓子の配り方(D相当)
1日目に1個、以降毎日「前日と同じ個数」か「前日+1個」のどちらかを配る。N日目までの配り方の総数を10^9+7で割った余りを求めよ。(N ≤ 10^3、個数の上限 M ≤ 10^3)
ヒント: 第10章
方針: 数え上げDP。dp[日][その日の個数] = パターン数、遷移は「同じ」と「+1」の2本。「総数を10^9+7で割った余り」はAtCoder数え上げ問題の合図で、加算のたびに % MOD する。
採点の目安
| 正解数 | 到達レベル |
|---|---|
| 問1〜4 | paiza Bランクは射程内 |
| 問1〜5 + 問6〜7 | paiza A〜S・AtCoder茶色の実力 |
| 8問以上 | AtCoder緑・面接の標準問題に対応可能 |

間違い直しのすすめ
模擬テストの価値は答え合わせの後にあります。各問について、次の3行メモを残してください。
問8: ✗
シグナル: 「最大の長さ」+ 答えの範囲が10^9 → 答えで二分探索
見落とし: 判定問題に変換する発想が出なかった → 第8章を再読
このメモが溜まると、第12章の20選があなた専用の弱点リストに進化します。
メンター本番のpaizaやAtCoderは、ここまでやったあなたにとって「初見の問題」ではなく「見たことのある型の変装」です。あとは場数。paizaならスキルチェックを週1問、AtCoderなら毎週のABCに参加する習慣をつけましょう。
まとめ
- 模擬10問は本書の全パターンの総復習。1問30分・5ステップ・シグナルメモの3点セットで取り組む
- paiza B級の壁はMap集計と仕様の正確な読解、A〜S級の壁は貪欲・DP
- AtCoder C級の壁はbit全探索とBFS、D級の壁は「答えで二分探索」・Union-Find・数え上げDP
- 間違い直しの3行メモが、パターン認識表を「自分専用」に育てる
これで本編は修了です。付録には環境構築、スニペット集、緑→水色へのロードマップを用意しました。実戦のお供にどうぞ。