题解:P11596 [NOISG 2018 Finals] Lightning Rod

· · 题解

思路 & 代码实现

先将大楼按高度排好位置(从低到高),然后从倒数第二矮的大楼开始枚举比它矮一层的大楼如果可以保护的到,把保护到的大楼加入这栋大楼的集合里(这个可以用双指针加并查集来做到,时间复杂度 O(n \log n) 足够了)。

然后求不同的集合有几个,输出即可。