zoukankan      html  css  js  c++  java
  • 扫描线-小Z的桌子

    大概题意:在一个01矩阵中找到一个周长最大的全0矩形。

    这道题用的是扫描线,O(n^2),求最大面积的思路完全可以放在这里。下面说说思路。

    首先,一个最大周长子矩形(最大周长全0矩形),左右两侧的列上一定至少有一个1,不然显然这个矩形可以再往左/右扩展。

    由于这个,我们联想到找矩形两边的1。初始想法是先n方,预处理一个点上面有多少点,下面有多少点。枚举出每一行的每一段连续的0,将这些每个点的up和down加起来减1,取min,这就是这个可能最大周长子矩形的最大可能高。答案即是高+宽乘2。

    但是,这种做法有几个小问题,以后做扫描线的题目时一定要注意:

    1.初始想法中直接统计最小高的想法是错的。例如:

    4 5

    XX.XX

    XX.XX

    X...X

    X.X.X

    显然,应该分别统计minup和mindown。

    2.两个边界上的1不一定在同一行,例如:

     .

    X.

     .X

     .

     .

    但是,我们一定可以保证它一定紧贴一边的x,所以我们只需统计0序列的所有前缀即可。

    这样就没有错了

  • 相关阅读:
    python判断字典中key是否存在
    获取redis中所有的key,清空整个 Redis 服务器的数据
    python redis模块详解
    Windows中redis的下载及安装、设置
    .htaccess
    python介绍
    vi和vim
    其他
    Linux系统相关命令
    Linux用户权限常见命令
  • 原文地址:https://www.cnblogs.com/MyNameIsPc/p/7348465.html
Copyright © 2011-2022 走看看