CF1391D(思维)
打 cf 打到了这道题,想了会做出来了,感觉这题挺有趣的
题目大意
给出一个 0/1 矩阵,要求所有长度为偶数的子正方形内部的异或和为 1,可以把 0 变 1 或把 1 变 0,求是否可以满足要求,如果可以求最少要变化几次
数据范围
(1 le n imes m le 10^6,n le m)
解题思路
容易发现当 (n ge 4) 的时候没有解,因为它包含了四个小偶数正方形
(n = 1) 时什么都不用改
(n = 2) 时发现要满足的要求等价于奇数列的上下两个值的异或和都相等,偶数列同理,且奇偶列的异或和为 1,考虑相邻的两个 (2 imes 2) 矩形异或起来剩周围的两个竖条,他们的异或和为 0,所以各自的异或和相等
(n = 3) 考虑和 (n=2) 时一样做,我们把它拆成两个 (n = 2) 时的情况即可,正确性留给读者思考
总复杂度 (Theta(nm)),目前是最快的之一,代码不是很好懂就不放了