zoukankan      html  css  js  c++  java
  • 《广告印刷》题解

    最近,afy决定给TOJ印刷广告,广告牌是刷在城市的建筑物上的,城市里有紧靠着的N个建筑。afy决定在上面找一块尽可能大的矩形放置广告牌。我们假设每个建筑物都有一个高度,从左到右给出每个建筑物的高度H1,H2…HN,且 \(1\leq Hi\leq1,000,000,000\) ,并且我们假设每个建筑物的宽度均为1。要求输出广告牌的最大面积。
    对于这道题,一开始我有个贪心思路,不过好像假了
    错误思路: 维护一个当前最大面积的区间,
    每次向右插入一个点,如果左端点的贡献为负数,就将左端点删去,
    错误:左端点对当前区间的贡献为负数,不一定对之后区间贡献为负数
    卡掉错误做法样例:

    5
    13 34 16 25 30 
    

    首先\(a[2] > 2*a[1]\),将13弹出
    但是 \(13\) 对区间 \([2,4]\)\(13-4*(16-13) = 1\)的贡献,而错误做法中,弹出后就不会补上,所以错误
    正确做法:对每个建筑物维护一个区间:以以该建筑物为最小值的最大区间,不难发现这个这个区间就是一个建筑物的最大面积贡献
    这个东西可以单调队列 \(O(n)\) 维护

  • 相关阅读:
    敏捷开发感想
    团队分工
    My Partner‘s Code View
    课堂上面的练习
    APP测试用例
    Android App测试计划和设计测试矩阵
    BugReport-智慧农业APP
    图书管理系统的活动图和时序图
    图书管理系统用例图
    对图书管理系统5W1H的分析
  • 原文地址:https://www.cnblogs.com/cdsidi/p/15559385.html
Copyright © 2011-2022 走看看