在 Lights Out 游戏的扩展版本中,是一个有 5 行每行 6 个按钮的谜题,每个按钮都有一个灯,当按下按钮时,该按钮及其上方、下方、右侧和左侧的每个相邻按钮的灯状态会反转, 角落的按钮改变3个按钮的状态;边缘的按钮改变4个按钮的状态,其他按钮改变5个的状态,例如,如果按下下方左侧标记为X的按钮,则显示将变为右侧的图像。
在 Lights Out 游戏的扩展版本中,是一个有 5 行每行 6 个按钮的谜题(实际的谜题有 5 行每行 5 个按钮)。每个按钮都有一个灯。当按下按钮时,该按钮及其上方、下方、右侧和左侧的每个(最多四个)相邻按钮的灯状态会反转。 (如果打开,灯关闭;如果关闭,灯打开。)角落的按钮改变3个按钮的状态;边缘的按钮改变4个按钮的状态,其他按钮改变5个的状态。例如,如果按下下方左侧标记为X的按钮,则显示将变为右侧的图像。 游戏的目标是,从显示器上的任何一组初始灯开始,按下按钮使显示器进入所有灯都关闭的状态。当相邻按钮被按下时,一个按钮的动作可以撤销另一个按钮的效果。例如,在下面的显示中,按下左侧显示中标记为 X 的按钮会导致右侧显示。注意,第 2 行第 3 列和第 2 行第 5 列的按钮都改变了第 2 行第 4 列按钮的状态,所以最后,它的状态是不变的。 笔记: 1. 按下按钮的顺序无关紧要。 2. 如果第二次按下按钮,它会完全取消第一次按下的效果,因此不需要多次按下按钮。 3. 如第二张图所示,按下第二排对应的按钮,可以关闭第一排的所有灯。通过在每一行重复这个过程,第一行中的所有灯 可能会出现四行。类似地,通过按下第 2、3 列中的按钮,可以关闭前 5 列中的所有灯。 编写一个程序来解决这个难题。
标签: HBC230527[CQOI2016]K远点对 堆/优先队列 计算几何 KD Tree 数据结构EXTENDED LIGHTS OUT题解