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

    这样就没有错了

  • 相关阅读:
    JS 百度地图路书---动态路线
    jQuery---创建和添加节点
    CSS基础
    第一篇:前端知识之HTML内容
    JS高级---为内置对象添加原型方法
    JS DOM属性+JS事件
    Vue-router
    vue使用kkfileview文件预览功能
    JS高级---案例:验证密码的强度
    promise是怎么来的?
  • 原文地址:https://www.cnblogs.com/MyNameIsPc/p/7348465.html
Copyright © 2011-2022 走看看