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序列的所有前缀即可。

    这样就没有错了

  • 相关阅读:
    移动端web初体验
    网页布局框架
    CSS 3D翻转相册动画特效
    move.js框架
    js照片墙拖拽特效
    团队编程项目作业2-团队编程项目开发环境搭建过程
    课后作业-阅读任务-阅读提问-1
    团队编程项目作业3
    阅读提问-2
    结对编程项目作业5
  • 原文地址:https://www.cnblogs.com/MyNameIsPc/p/7348465.html
Copyright © 2011-2022 走看看