Skip to content

Latest commit

 

History

History

2015.Average-Height-of-Buildings-in-Each-Segment

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

2015.Average-Height-of-Buildings-in-Each-Segment

对于给出若干个区间、涉及到区间合并的问题,扫描线是比较自然的想法。

我们只关注那些建筑两边的边缘线位置。将所有的边缘线按照位置从小到大排序之后,我们逐个遍历一遍。维护一个集合,遇到左边缘就插入h,遇到右边缘就删除h。于是,我们在每一个边缘线位置pos,都可以通过当前集合得到一个平均值avg,这意味着从pos往右直至下一个边缘线位置pos2,中间这部分区间[pos, pos2]就是一个输出恒为avg的线段。

我们将这些琐碎的线段收集起来,合并输出相同的线段,并且剔除输出为0的线段,这剩余的这些线段就是答案。

另外,事实上我们不需要真正维护一个multiset。我们只关心集合的sum和count,因此用两个变量即可。