Official

E - One Square in a Triangle Editorial by potato167

ジャッジについて

ジャッジについて解説します。

まず、三角形の面積は \(3\) 点の座標がわかっていれば簡単に計算でき、正しい面積の三角形が出力されているかどうかは \(O(1)\) で判定できます。

三角形の中にある正方形の数ですが、これは floor_sum を用いて \(O(\log{M})\) で求まります。(\(M\) は座標の絶対値の最大値)

三角形を分割することで、以下の問題が解ければ正方形の数を求めることができます。

  • \(3\) つの直線 \(ax=by,cx=dy,x=e\) に囲まれた領域にある正方形の数を求めてください。ただし、 \(b,d,e\)  は \(0\) より大きい整数で、 \(a,c\)\(0\) 以上の整数です。

この問題は直線 \(ax=by,cx=dy\) のうち傾きが大きいほうを \(X\) 軸正方向に \(1\)\(Y\) 軸負方向に \(1\) ずらすことで、 \(3\) つの直線に囲まれた領域にある格子点の数を数える問題に帰着できて、これは floor_sum で解けます。

posted:
last update: