Sequence of points

Click here to CF24C.
感觉很多的题解要么是感性分析法,要么证明过于复杂,感觉挺好证的。
认为有的题就是感性感觉加上理性证明。
直接上:
我们设 M0 坐标为 (a,b)Aimodn 坐标为 (λimodn,wimodn)
根据两点间距离公式,如果 (x1,y1)(x2,y2) 关于 (m,n) 对称,那么 x1+x2=2×my1+y2=2×n
也就是:(x2,y2)=(2×mx1,2×ny1)
那么假设 (x2,y2)(x3,y3) 关于 (c,d) 对称,则:
(x3,y3)=(2×c2×m+x1,2×d2×n+y1)
我们将这个结论带入题目,得(假设对称了 t 次):

Mt=((1)t×a+2×i=0t1(1)ti+1×λi,(1)t×b+2×i=0t1(1)ti+1×wi)

显然 n 奇偶性不同时上述表达式不同,但是我们观察题目发现 n 是奇数,所以对称 n 次之后的坐标可以简化成:

Mn=(2×i=0n1(1)ni+1×λia,2×i=0n1(1)ni+1×wib)

这个式子看起来并没有什么帮助,这个时候感性分析法就来了,根据数学直觉,我们将 Mn 再对称 n 次可能会有不一样的效果,试一试:

M2×n=((1)n×xMn+2×i=n2×n1(1)2×ni+1×λimodn,(1)n×yMn+2×i=n2×n1(1)2×ni+1×wimodn)

n 是奇数,化简并将 Mn 的坐标带入得:

M2×n=(a,b)

好!所以我们得出结论:对称 2×n 次后相当于没有对称(回到原位),所以我们将总次数对 2×n 取模,数据范围缩小到 105 级别,之后两点间距离公式暴力算就可以了。
别忘了对 n 取模。
代码:

t %= n << 1 ;
f (i ,0 ,t - 1 ,1) {
	a = (x[i % n] << 1) - a ; 
	b = (y[i % n] << 1) - b ;
}
posted @   tomzu  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示