南外集训 2024.1.23 T3
给出一些圆,没有相交或相切的关系,求包含关系意义下的最大权独立集。
\(1\le n\le 10^5, 1\le w\le 10^3, 1\le x,y,r\le 10^8, x,y,r\in \mathbb Z\)
我们只需要建出树结构就容易在树上贪心求解。
取任何一条垂直线,一些圆会与这条线交出一个区间,这些区间的包含关系就是这些圆彼此的包含关系。又注意到,当依次加入这些区间的时候,我们只需要找到当前区间的上端点上方的第一个点,如果它是某个区间的上端点,那么这个区间就是包含当前区间的最小区间;否则包含当前区间的最小区间和包含上面那个点的最小区间相同。
从左向右扫描线,扫到一个圆的左端点时加入两个端点(此时它们当然重合),同时求出包含这个圆的最小圆;扫到右端点时删除这两个点。注意到我们不能在移动端点时动态维护这些点的具体位置,但是我们也不需要这样做,这是因为随着扫描线移动,它们彼此之间的关系总是不变的。于是直接把点扔进一个 set
里面即可。时间复杂度 \(\Theta(n\log n)\)。