题意
- 对于一个由0,1构成的矩形,求解其中面积最大的全0子矩形,和全0子正方形
思路
- 法一:枚举上下左右四个边界,利用二维前缀和,如果前缀和为0就成立
- 复杂度:
- 复杂度:
- 法二:枚举左右边界,对边界内的1按y排序,每两个相邻点+边界构成矩形
- 复杂度:
,(m为1的个数,最多到
)
- 复杂度:
- 法三:悬线法,将矩形中每个1视为黑点0视为无色点,每个点有一条向上的悬线悬线碰到黑点重新开始计算长度,对于每一条悬线,都有可能成为矩形的上下界
求点(i,j)最长悬线度
求点(i,j)向左最长延伸长度
求点(i,j)向左最长延伸长度
求(i,j)所在的悬线向左最长延伸长度
求(i,j)所在的悬线向左最长延伸长度
- 使用
得到结果
- 如果求正方形,悬线法求边长,边长长度为
- 复杂度:
- 复杂度:
- 法四:求正方形,
表示以
作为正方形右下角,所获得的最大边长
- 提前维护每个点向上和向左有多少个连续0
- 复杂度: