Div.2 #478 D
直線 \(y = ax+b\) に直角な方向の速度が等しく, 直線に平行な方向の速度が異なる幽霊は出会う.
直線に直角な方向のベクトルは \((a, -1)\) で平行な方向のベクトルは \((1, a)\) (速度の大小だけが重要なので単位ベクトルにする必要はない) なので, 直角な方向の速度を \(V_n\), 平行な方向の速度を \(V_d\) とすると,
\[V_n a + V_d = V_x \\ -V_n + aV_d = V_y\]となるので,
\[V_n = \frac{aV_x-V_y}{a^2+1} \\ V_d = \frac{V_x+aV_y}{a^2+1}\]となる. ここでも速度の大小のみが重要なので分母の \(a^2+1\) は計算しなくていい.
\((V_n, V_d)\) の組をソートして二分探索で数を数える.