5.31 CF R 949 (Div.2)

5.31 CF R 949 (Div.2)

Solve : A~D (4/6)

Rank : 99

Rating : \(1939+132=2071\)\(1989+82=2071\)

Perf : 2317 | 2265

发挥评价:Normal

失误:

小失误是做 2B 时候没有注意,第一次错了之后就急了,接连交了 \(4\) 发罚时。

注意如果交上去 WA 了,想清楚、找清楚问题再交。

CF1981E

(me *2200)

给定 \(n\) 个区间 \([l_i,r_i]\)\(n\) 个权值 \(a_i\),对任意 \(i≠j\),如 \(i,j\) 对应区间有交,则在点 \(i,j\) 间连一条权值 \(|a_i-a_j|\) 的边。

求最终图的 MST。

Solution:

这种根据某些信息生成边数很多的图然后求 MST 的题,一种经典 trick 就是:绝大多数边对于 MST 都是没用的。

考虑对区间做扫描线,则在任意时刻,位于集合内的所有点连成一条从小到大的链显然最优。

此时直接维护极差变化值并不正确,因为链中间还可能加入一些点,他们也要向集合中的点连边,产生额外代价。

那么向集合中哪个点连边?向离得最近的连。

正确的做法是:每加入一个点就向它在集合中的前驱后继连边,这样最后总边数是 \(O(n)\) 级别的,直接求 MST 即可。

posted @ 2024-06-01 07:59  Fun_Strawberry  阅读(54)  评论(2)    收藏  举报