题目
给一个$N\times M$的方格网络,有些格子是黑的,其他的是白的。你可以做选一行或者一列,将其颜色取反。操作可以做无限次。问:能得到的最大的全黑的矩形面积是多少。
数据范围
$2\leq N,M\leq 2000$
做法
对于$2\times 2$的正方形,如果内部有1个或者3个白的,那么称它为“坏的”。显然,坏的正方形不论怎么变换,仍将是坏的。所以,最后的长方形里面,一定不含有坏的正方形。显然,我们可以将长方形的最上一行和最左一列变成黑的。由于“好的”正方形,经过变换之后,一定还是好的,所以我们可以从长方形的边界推出,长方形可以变成全黑。于是,一个长方形能作为最后选择的长方形,等价条件是它不包含有坏的正方形。
将坏的正方形的中心标记为p,则问题转化为框出一个不包含p的最大的正方形,这是一个经典问题,可用悬线法$O(N\times M)$做出。
代码
|
|