洛谷:P3467:PLA-Postering


洛谷:P3467:PLA-Postering

Table of Contents

题目

P3467:PLA-Postering

分析

这道题充分利用了题意以及单调栈的特性。

其核心思路是:

  • 初始海报数设为建筑物数量n——我们假定最多需要n张海报。
  • 使用单调栈维护建筑物的高度序列。
  • 当栈顶高度大于即将入栈的元素时弹栈。这是因为:此时,栈顶这个比较高的墙面总归需要一张,所以不用多余的操作。
  • 若栈顶元素与即将入栈元素等高,则需要的海报数减1。这是因为:只要高度相等,就可以用一张覆盖整个宽度的海报来覆盖。
  • 否则将当前高度入栈。这是为了考虑高度不断递减的情况。

答案

Solution

思考

当有两个处于同一个峰两侧的等高建筑物时,它们可以用一张海报覆盖,从而减少所需的海报总数。

代码实现简洁高效,时间复杂度为\(O(n)\),空间复杂度为\(O(n)\),其中n是建筑物的数量。

Previous Next