Sequence of points
Click here to CF24C.
感觉很多的题解要么是感性分析法,要么证明过于复杂,感觉挺好证的。
认为有的题就是感性感觉加上理性证明。
直接上:
我们设 \(M_0\) 坐标为 \((a,b)\),\(A_{i\bmod n}\) 坐标为 \((\lambda_{i\bmod n},w_{i\bmod n})\)。
根据两点间距离公式,如果 \((x_1,y_1)\) 和 \((x_2,y_2)\) 关于 \((m,n)\) 对称,那么 \(x_1+x_2=2\times m\)、\(y_1+y_2=2\times n\)。
也就是:\((x_2,y_2)=(2\times m-x_1,2\times n-y_1)\)。
那么假设 \((x_2,y_2)\) 和 \((x_3,y_3)\) 关于 \((c,d)\) 对称,则:
\((x_3,y_3)=(2\times c-2\times m+x_1,2\times d-2\times n+y_1)\)。
我们将这个结论带入题目,得(假设对称了 \(t\) 次):
显然 \(n\) 奇偶性不同时上述表达式不同,但是我们观察题目发现 \(n\) 是奇数,所以对称 \(n\) 次之后的坐标可以简化成:
这个式子看起来并没有什么帮助,这个时候感性分析法就来了,根据数学直觉,我们将 \(M_n\) 再对称 \(n\) 次可能会有不一样的效果,试一试:
\(n\) 是奇数,化简并将 \(M_n\) 的坐标带入得:
好!所以我们得出结论:对称 \(2\times n\) 次后相当于没有对称(回到原位),所以我们将总次数对 \(2\times n\) 取模,数据范围缩小到 \(10^5\) 级别,之后两点间距离公式暴力算就可以了。
别忘了对 \(n\) 取模。
代码:
t %= n << 1 ;
f (i ,0 ,t - 1 ,1) {
a = (x[i % n] << 1) - a ;
b = (y[i % n] << 1) - b ;
}