CF1391D(思维)

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)),目前是最快的之一,代码不是很好懂就不放了

原文地址:https://www.cnblogs.com/Hs-black/p/13472629.html