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

    这样就没有错了

  • 相关阅读:
    Git 实战教程
    Github 快速上手实战教程
    02.制作一个自己的 Java 编辑器
    Eclipse代码自动提示设置
    java.lang.SuppressWarnings的注解简介
    01.Java 开发简单的计算器
    10个相见恨晚的 Java 在线练手项目
    git 1
    cocos3.2 搭建开发环境
    love 音效
  • 原文地址:https://www.cnblogs.com/MyNameIsPc/p/7348465.html
Copyright © 2011-2022 走看看