AIで解説 AtCoder攻略 区分線形最適化

読了 約4分 たびすけ
AIで解説 AtCoder攻略 区分線形最適化

区分線形最適化ページの位置づけ

項目内容
必修度発展
学習目安発展
前提座標・二分探索
対象問題4問(推定値あり4問、未算出0問)

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

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

最大・最小の担当点が切り替わる時刻だけを候補にし、区分線形な面積や値を評価します。

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

区分線形最適化の見分け方

  • 時間に対して座標が直線的に変化する
  • 最大・最小の担当が有限の時刻で切り替わる
  • 全時刻を連続的に調べる必要がある

区分線形最適化の実装前チェック

  • 切替時刻を全て列挙する
  • 候補時刻の前後で担当点を確認する
  • 浮動小数点の誤差と区間端点を検算する

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

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

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

最初の一問として、ABC159 C Maximum Volume公式解説)を解きます。3辺の合計がLなら、体積は3辺が等しいとき最大になります。Lを3等分して立方体の体積を計算します。

L = int(input())
print((L / 3) ** 3)

式を1回計算するO(1)時間・O(1)メモリです。

区分線形最適化の学ぶ順番

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

まず解く

問題公式解説出題意図difficulty
ABC159 C Maximum Volume公式解説和がLに固定された直方体の体積は相加相乗平均より3辺が等しいとき最大で、(L/3)^3となる。-104
ABC165 D Floor Function公式解説関数のB周期性でxを0以上B未満に縮約し、単調性からx=min(B−1,N)だけを評価する。600
ABC196 E Filters公式解説Track the image of an interval under repeated add/subtract/clamp operations and evaluate each query by clamping its value.1650
ABC130 F Minimum Bounding Box公式解説各軸の最大・最小座標が切り替わる時刻で区分線形に分け、候補時刻の面積を評価する。2240

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

区分線形最適化の次に読むページ

必須Python文法標準ライブラリ・定石