AIで解説 AtCoder攻略 長方形・中心

読了 約4分 たびすけ
AIで解説 AtCoder攻略 長方形・中心

長方形・中心ページの位置づけ

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

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

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

対称性や中心点の性質を使い、面積や分割条件を式へ落とします。浮動小数点の扱いも確認します。

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

長方形・中心の見分け方

  • 中心を通る直線や対称な配置が現れる
  • 図形の面積を半分に分ける条件がある
  • 整数入力でも答えが小数になる

長方形・中心の実装前チェック

  • 中心座標を式で求める
  • 境界上の扱いを分ける
  • 出力誤差と除算の型を確認する

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

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

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

最初の一問として、ABC183 B Billiards公式解説)を解きます。ゴールをx軸の下へ反転すると、2点を結ぶ直線とx軸の交点が答えになります。一次関数の内分比からx座標を求めます。

SX, SY, GX, GY = map(int, input().split())
print((SX * GY + GX * SY) / (SY + GY))

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

長方形・中心の学ぶ順番

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

まず解く

問題公式解説出題意図difficulty
ABC183 B Billiards公式解説Use the intersection of the ball trajectory with the x-axis to solve a linear interpolation formula.-55
ABC130 C Rectangle Cutting公式解説長方形の中心を通る直線なら二等分になることを利用し、中心点かどうかも判定する。626
ABC197 D Opposite公式解説Find the polygon center from opposite vertices and rotate the first vertex by 2π/N around it.831
ABC139 F Engines公式解説進行方向と内積が正になるベクトルは角度順で連続区間になることを使い、倍長配列の区間和を全探索する。2034
ABC207 D Congruence Points公式解説Anchor one point, try each candidate correspondence, and test whether a common rotation and translation maps all points.2074

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

長方形・中心の次に読むページ

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