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借鉴UI设计
    C#学习笔记——面向对象、面向组件以及类型基础
    关系数据库设计
    Winform开发框架之插件化应用框架实现
    桌面程序界面设计分享
    2-Bom
    1-简介
    测试
  • 原文地址:https://www.cnblogs.com/MyNameIsPc/p/7348465.html
Copyright © 2011-2022 走看看