Veritas 觉得【清华集训 2017】无限之环这题太难了,他对这题的一个简化魔改情况更感兴趣。
游戏在一个 n×mn \times mn×m 的网格状棋盘上进行,其中有些小方格中会有水管,水管可能在格某些方向的边界的中点有接口,所有水管的粗细都相同,所以如果两个相邻方格的共边界的中点都有接头,那么可以看作这两个接头互相连接。水管有以下 151515 种形状:
游戏开始时,棋盘中水管可能存在漏水的地方。
形式化地:如果存在某个接头,没有和其它接头相连接,那么它就是一个漏水的地方。
玩家可以进行一种操作:选定一个含有非奇数度数型水管的方格,将其中的水管绕方格中心顺时针或逆时针旋转 909090 度。
奇数度数型水管是指接头数为 111 或 333 的水管。也就是说,玩家只能旋转接头数为 222 或 444 的水管。
现给出一个初始局面,请给出一个方案可以使棋盘上不存在漏水的地方,或判定不存在这样的方案。如果存在多种方案,你可以给出任意一个。
第一行两个正整数 n,mn, mn,m,代表网格的大小。
接下来 nnn 行每行 mmm 个数,每个数是 [0,15][0,15][0,15] 中的一个,你可以将其看作一个 444 位的二进制数,从低到高每一位分别代表初始局面中这个格子上、右、下、左方向上是否有水管接头。
特别地,如果这个数是 000,则意味着这个位置没有水管。
比如 3(0011(2))3(0011_{(2)})3(0011(2)) 代表上和右有接头,也就是一个 LLL 型,而 12(1100(2))12(1100_{(2)})12(1100(2)) 代表下和左有接头,也就是将 LLL 型旋转 180180180 度。
如果不存在一个方案可以使棋盘上不存在漏水的地方,输出一行一个整数 −1-1−1。
否则,输出使得棋盘上不存在漏水的最终局面,即 nnn 行每行 mmm 个数,每个数是 [0,15][0,15][0,15] 中的一个,你可以将其看作一个 444 位的二进制数,从低到高每一位分别代表初始局面中这个格子上、右、下、左方向上是否有水管接头。
你需要保证这个最终局面可以通过题述操作由初始局面获得。
2 3 3 14 12 3 11 12
6 14 12 3 11 9
棋盘如下:
旋转方法很显然,先将左上角虚线方格内的水管顺时针转 909090 度,
然后右下角虚线方格内的水管顺时针旋转 909090 度,这样就使得水管封闭了。
1 2 1 1
-1
因为玩家不能旋转接头数为 111 的水管,所以无法做出任何操作使其封闭。
所有数据保证 2≤nm≤1052\le nm\le 10^52≤nm≤105。