Loading

题解:[KTSC 2021] 会议室 / meeting

显然可以对区间端点继续离散化,下面设区间端点都在 \([1,2n]\) 内。

不难看出,如果将建一张图,每个点代表原题中的一个区间,两个区间相邻则连一条边,那么两个区间相关当且仅当这两个点在图上连通。

同一个连通块的点不能放在同一个会议室,而一个会议室可以容纳任意多两两不连通的点,故题目可以转化为删除一些点和与它们相邻的边,使得剩下的每个连通块大小不超过 \(K\),求删去的点的权值和的最小值。

直接在图上做比较难,还是要考虑区间的性质。设最后的连通块为 \(C_1,C_2,\dots,C_m\),每个连通块内区间左端点最小值为 \(L_1,L_2,\dots,L_m\),右端点最大值为 \(R_1,R_2,\dots,R_m\),则不难发现所有 \([L_i,R_i]\) 互不相交。

考虑对 \(R\) 进行 dp,设 \(0=R_0<R_1<\dots<R_m=2n\),则每个 \([R_{i-1}+1,R_i]\) 代表一个连通块。则在所有被 \([R_{i-1}+1,R_i]\) 包含的区间中,只能保留不超过 \(K\) 个,则肯定是贪心地保留权值最大的 \(K\) 个。而不被任何一个 \([R_{i-1}+1,R_i]\) 包含的区间则必须被删除。

\(f_i\) 表示某个 \(R=i\),且考虑了所有左端点不超过 \(i\) 的区间是否删除,所删去的权值和的最小值。依次遍历 \(j=i-1,i-2,\dots,0\),考虑从 \(f_j\) 转移过来。则对于所有 \((l,r,w)\) 满足 \(j<l\le i\)\(r>i\) 的必须删除;\(r\le i\) 的,选取 \(w\) 最大的 \(K\) 个保留(如果不足 \(K\) 个则全部保留),删去其它的。

在遍历 \(j\) 的过程中用小根堆维护可做到 \(\mathcal O(n^2\log n)\)

进一步,考虑对于固定的 \(i\),从大到小遍历 \(j\) 的过程中,第 \(K\) 大的 \(w\)(不存在设为 \(0\))一定是单调不减的。考虑维护这个值 \(lim\)。当考虑到一个 \(j<l\le r\le i\) 的区间 \((l,r,w)\) 时,如果 \(w\leq lim\) 则可以直接删除,否则一定会保留这个区间、删除一个权值为 \(lim\) 的区间,并增大 \(lim\)(也有可能不变)。离散化所有区间权值后 \(lim\) 不会超过 \(n\),可以开桶维护所有保留的区间的权值,做到 \(\mathcal O(n^2)\)

posted @ 2025-12-14 22:45  complexor  阅读(7)  评论(0)    收藏  举报