HNOI 2019 多边形
HNOI 2019 多边形 题意 小 R 与小 W 在玩游戏。 他们有一个边数为 \(n\) 的凸多边形,其顶点沿逆时针方向标号依次为 \(1,2,3...n\) 。最开始凸多边形中有 \(n\) 条线段,即多边形的 \(n\) 条边。这里我们用一个有序数对 \((a,b)\) (其中 \(a<b\) )来表示一条端点分别为顶点 \(a,b\) 的线段。 在游戏开始之前,小 W 会进行一些操作。每次操作时,他会选中多边形的两个互异顶点,给它们之间连一条线段,并且所连的线段不会与已存的线段重合、相交( 只拥有一个公共端点不算作相交 )。他会不断重复这个过程,直到无法继续连线,这样得到了状态 \(S_0\) 。 小 W 定义了一种「旋转」操作:对于当前状态,选定 \(1\le a<b<c<d\le n\) 共 \(4\) 个顶点 ,它们两两之间共有 \(5\) 条线段—— \((a,b),(b,c),(c,d),(a,d),(a,c)\) ,然后删去线段 \((a,c)\) ,并连上线段 \((b,d)\) 。那么用有序数对 \((a,b)\) 即可唯一表示该次「旋转」。我们称这次旋转为 \((a,c)\) 「旋转」。显然每次进行完“旋转”操作后多边形中依然不存在相交的线段。 当小 W 将一个状态作为游戏初始状态展示给小 R 后,游戏开始。游戏过程中,小 R 每次可以对当前的状态进行