题意
X轴上有n个建筑,求这些建筑和地面的包络线。
题解
首先我们需要将LR坐标离散化,并且将建筑按L坐标排序。
维护一个now表示当前最高点,初始值赋0。再维护一个最大堆。
从小到大遍历离散化坐标,设当前坐标为x,将L==x的建筑高度push进最大堆,如果push的最大建筑高度p>now,说明当前点变高了,输出:
x now
x p
输出后更新now=p,然后将R<=x的建筑高度pop出最大堆,紧接着更新now=堆顶 or 0(空堆),如果pop的最大建筑高度q>now,说明当前点变低了,输出:
x q
x now
博客围绕X轴上n个建筑与地面包络线问题展开。题解先将LR坐标离散化并按L坐标排序,维护当前最高点和最大堆。遍历离散化坐标,根据建筑高度的变化更新最高点,当高度升高或降低时输出相应坐标和高度。

被折叠的 条评论
为什么被折叠?



