AIで解説 AtCoder攻略 幾何

読了 約6分 たびすけ
AIで解説 AtCoder攻略 幾何

幾何ページの位置づけ

項目内容
必修度標準
学習目安標準〜発展
前提座標・浮動小数
対象問題79問(推定値あり78問、未算出1問)

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

学習目安difficulty推定値問題数
入門difficulty < 019
標準0〜79923
標準〜発展800〜11999
発展1200以上27
未算出1

図形を座標とベクトルに置き換え、距離・内積・外積・交点を式で判定します。境界上を含むかを先に決めることが重要です。

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

幾何の見分け方

  • 点や線分の位置関係を判定する
  • 距離や角度の最大・最小を求める
  • 図形の対称性を数式へ置き換えられる

幾何の実装前チェック

  • 座標系と向きを固定する
  • 平方根を避けられる比較は二乗で行う
  • 同一直線・接触・端点を別ケースで確認する

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

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

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

最初の一問として、ABC174 B Distance 公式解説)を解きます。円の中にあるかは、平方根を取らずにx^2+y^2とD^2を比較できます。浮動小数点の誤差を避けて判定します。

N, D = map(int, input().split())
answer = 0
for _ in range(N):
    x, y = map(int, input().split())
    if x * x + y * y <= D * D:
        answer += 1
print(answer)

各点を1回判定するだけなのでO(N)時間、追加メモリO(1)です。

幾何の学ぶ順番

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

まず解く

問題公式解説出題意図difficulty
ABC398 A Doors in the Center公式解説Place one or two central equals signs according to the parity of N and fill the remainder with hyphens.-1093
ABC383 A Humidifier 1公式解説基準セルからのマンハッタン距離が範囲内のマスを数える。-827
ABC407 A Approximation公式解説公式Editorialの方針を approximation rounding として整理する。-698
ABC434 B Bird Watching公式解説公式Editorialの方針を bird watching geometry として整理する。-657
ABC411 B Distance Table公式解説公式Editorialの方針を distance table として整理する。-606

次に解く

問題公式解説出題意図difficulty
ABC174 B Distance 公式解説平方根を使わずx^2+y^2<=D^2を判定し、円内の点の個数を数える。-495
ABC254 B Practical Computing公式解説両端1と直上2値の和の漸化式でパスカルの三角形を構成する。-476
ABC373 B 1D Keyboard公式解説キーボード上の各文字位置を調べ、隣り合う入力文字間の距離を合計する。-403
ABC253 B Distance Between Tokens公式解説グリッド上の2つの記号位置を探し、マンハッタン距離を計算する。-378
ABC375 B Traveling Takahashi Problem公式解説点列を順に結んだユークリッド距離を累積する。-325

挑戦問題

問題公式解説出題意図difficulty
ABC269 B Rectangle Detection公式解説#セルの最小最大行列を走査し、矩形の境界を出力する。-308
ABC348 B Farthest Point公式解説Official editorial intent is classified as farthest point.-251
ABC246 B Get Closer公式解説ベクトル(A,B)をユークリッド長で割り、単位ベクトルの座標を出力する。-250
ABC333 B Pentagon公式解説Compare the two possible chord lengths of a regular pentagon.-202
ABC318 B Overlapping sheets公式解説Mark every unit square covered by at least one sheet and count marked cells.-152

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

幾何の次に読むページ

中心と対称性で幾何を解くBFS・Dijkstraで最短距離を求める区分線形の極値を候補点で調べる