题解:P13783 [eJOI 2022] Bounded Spanning Tree

· · 题解

:::::info[题目基本信息] 考察:树链剖分,线段树,ST 表,贪心(省选/NOI-)。
题目简介:

- 这 $m$ 条边的边权构成一个 $m$ 阶排列。 - $\forall i\in[1,m]$,第 $i$ 条边的边权不低于 $l_i$ 且不高于 $r_i$。 - 前 $n-1$ 条边构成原图的一棵最小生成树(保证前 $n-1$ 构成原图的一棵生成树)。 现在请你给出任意一种赋边权的方式,或报告无解。 数据范围: - $1\le t\le 10^5

现在要求 m\ne n-1,加上了第三条限制条件。
观察一下,这个条件可以等价于所有非树边的端点间的树边权最大值小于自身边权,也就是说所有非树边的端点间的树边都需要在这条非树边前决策,那么首先你要保证在加入堆的过程中这条非树边要晚于这些树边加入(可以令非树边的 l_i 和这些树边的 l_j1\max),同时也要晚于这些树边被决策(可以令树边的 r_j 和这条非树边的 r_i1\min),这两个简单使用树链剖分可以做到 \Theta(n+m\log^2 n) 的时间复杂度,过不了,考虑优化。

这样就可以过了。
时间复杂度为 \Theta(m\log m),空间复杂度为 \Theta(m)

code