ARC081D Flip and Rectangles
题意:给出一个
每次操作可以将一行或一列取反,可以进行任意多次操作,问矩阵中全
首先考虑如何判定一个矩形经过操作能否变为全
先观察一些性质:
若某个矩形能被操作为全
,那么其任意子矩形也一定可以。 行列任意交换不影响某个矩形是否能变为全
。
任选位置
先查看第
在这之后,若做其他操作,则第
这等价于,对于位置
也即
由于
这同时也是充要条件。
在转化充要条件时,判定算法可能是构造性的。此时要尽量多想“有没有其他方法也可以完成构造?”,以得到更多性质。
比方说,在本题中,若直接选择第一行第一列开始构造(而不是任意的
)就很难得到这个性质。
该条件依然难以维护,考虑进行简化:能否只考虑一小部分矩形的约束呢?
条件可以看作若干异或方程组,线性相关的方程组显然是无用的。
略微手玩方程之间的线性相关模式后,可以发现,只需要考虑所有的
于是,对每个
若一个大矩形包含了坏矩形,则无法变为全
至此,我们将原问题转化为了最大全
(注意,长或宽为
这是经典问题,这里用悬线法解决。
复杂度