AIで解説 AtCoder攻略 貪欲法

読了 約7分 たびすけ
AIで解説 AtCoder攻略 貪欲法

貪欲法ページの位置づけ

項目内容
必修度必修
学習目安標準
前提ソート・累積値
対象問題101問(推定値あり99問、未算出2問)

この記事のdifficulty区分は、問題を解く順番を決めるための目安です。AtCoderの公式なA〜F区分ではなく、取得できたdifficulty推定値を次の範囲に分けています。

学習目安difficulty推定値問題数
入門difficulty < 023
標準0〜79939
標準〜発展800〜119916
発展1200以上21
未算出2

局所的な選択が全体の最適解につながる条件と、操作で変わらない量を見抜きます。選択の順番を証明できるかが判断軸です。

問題ごとの細かな実装は異なりますが、最初に確認する条件は共通しています。

貪欲法の見分け方

  • 選択が他の選択を壊さない
  • 操作を繰り返しても偶奇や差が変わらない
  • 価値の高い候補を優先できる

貪欲法の実装前チェック

  • 何が不変かを一文で書く
  • 局所選択が最適な理由を確認する
  • 負の値や同点の扱いを分ける

先に確認する文法・ライブラリ

まずは必須Python文法で、入力・配列・条件分岐・ループなどの基本を確認してください。問題に合わせたキュー、ヒープ、二分探索などの選び方は標準ライブラリ・定石にまとめています。

代表問題で実装を確認する

最初の一問として、ABC204 B Nuts公式解説)を解きます。各袋について10個を超えた分だけを合計します。袋ごとの計算が他の袋に影響しないため、局所的にその場で決められます。

N = int(input())
A = list(map(int, input().split()))
print(sum(max(value - 10, 0) for value in A))

袋を1回ずつ見るO(N)時間、O(1)追加メモリです。

貪欲法の学ぶ順番

このページでは全件を一度に並べず、difficultyの推定値を目安に代表問題を段階分けしています。難易度が未算出の問題は、制約と出題意図を先に確認します。

まず解く

問題公式解説出題意図difficulty
ABC204 B Nuts公式解説Sum max(A_i−10,0) for every tree.-1132
ABC432 A Permute to Maximize公式解説公式Editorialの方針を permute max greedy として整理する。-999
ABC209 B Can you buy them all?公式解説Subtract the one-yen discount for each even-indexed item and compare the total with X.-978
ABC243 A Shampoo公式解説残量からF、M、Tの順に消費し、周期後の残量で最後に消費できる人を判定する。-841
ABC210 A Cabbages公式解説Charge the first min(N,A) cabbages at the regular price and the rest at the discounted price.-813

次に解く

問題公式解説出題意図difficulty
ABC171 B Mix Juice公式解説ジュースをK本選ぶ費用を最小化するため、価格を昇順に並べて先頭K個を合計する。-765
ABC213 B Booby Prize公式解説得点と番号の組を降順ソートし、2番目の要素の番号を出力する。-692
ABC394 B cat公式解説Sort the input strings by length and concatenate them in ascending-length order.-630
ABC461 B The Honest Woodcutters公式解説Sort woodcutters and choose a feasible order with greedy DP.-581
ABC360 C Move It公式解説Official editorial intent is classified as group move cost.-559

挑戦問題

問題公式解説出題意図difficulty
ABC356 B Nutrients公式解説Official editorial intent is classified as nutrient requirement.-517
ABC432 B Permute to Minimize公式解説公式Editorialの方針を permute min greedy として整理する。-449
ABC353 B AtCoder Amusement Park公式解説Official editorial intent is classified as amusement group packing.-425
ABC354 B AtCoder Janken 2公式解説Official editorial intent is classified as janken sort.-403
ABC368 B Decrease 2 max elements公式解説Official editorial intent is classified as decrease two max.-384

問題文を読んだら、まず「見分け方」のどれに当たるかを一行で記録します。当てはまらない問題は、別のページへ移す判断自体を復習材料にします。

貪欲法の次に読むページ

ヒープとイベント掃引で順序を管理する二分探索で単調な条件を探す累積和で区間と差を数える