由于我们只关注相邻点的距离。所以可以先对这些点排个序,然后算出一个相邻距离的数组b1,b2,b3
考虑一次交换操作,等价于对这个距离数组的某一个下标:i 以及它的下一个点(i+1)%3 一个加一个减。
最终目标: 使得b1,b2,b3≥k .
在一个圆形牧场上,沿着圆周均匀分布着 n 个围栏,编号为 1 到 n。初始时,有 3 只羊分别位于 x,y,z 这三个围栏中,其他围栏为空。
你可以进行任意次操作:每次选择一只羊,将其移动到相邻的空围栏中(即和紧邻的空围栏交换位置)。换句话说,每次操作交换相邻两个围栏的“有羊”和“无羊”状态。
你的目标是经过若干次操作后,使得任意两只羊之间的距离不小于 k。两个围栏之间的距离定义为沿圆周较短一侧所经过的围栏段数,相邻围栏的距离为 1。
请你计算达到目标所需的最少操作次数;如果无论如何都无法满足要求,输出 −1。
约束:
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册