D - Congruence Points Editorial by misty1999


この問題は各点を複素数平面で管理すると比較的容易に実装することができます。ベクトル\(\vec{a}\)が表す複素数を\(a\)、ベクトル\(\vec{b}\)が表す複素数を\(b\)としたとき、\(\vec{a}\)\(\vec{b}\)に重なるように回転することは、各点の値に\(\frac{b}{a}\)を掛けることになります。点が移る先を\(2\)つ決めれば、残りの点が移る先も複素数を用いて計算できるため、全探索で解くことができます。なお、複素数の計算には誤差が含まれるため差の絶対値が小さい値に収まっていれば等しいと判定しています。

実装例 https://atcoder.jp/contests/abc207/submissions/23789798

posted:
last update: