省选集训 Day 3
学习了新知识:边三连通,耳分解,双极定向
下面是一些基础练习。
A
挺不错的问题。
考虑将一个点作为
容易设计
太劣了,考虑将拼耳的过程纳入 DP。
设
我们发现有重边的问题,而有可能使用两条边,所以记录次短边,最短边,不妨再加一维
转移分为以下情况:
- 直接连回去
- 新开一个耳(枚举从哪个点走,走到外面哪个点,最终走到哪里)
- 再走一步
B
神奇题目。
首先注意到一个大连通块可以删去 dfs 树上的叶子,因此不妨假设
那么就会有
考虑树的情况,我们以重心为根, 将一整颗
也就是找到一条边,满足断开后两个
现在变成了一般图,考虑推广到 dfs 树上。
取 dfs 树重心,如果符合树的情况可以直接构造,否则考虑
将重心的各个儿子(包括根方向)看作一个点,根据返祖边判断连通性,由于只会与子树外相连,所以这个连通块唯一,我们逐个扫描这个连通块的点并累加
那么剩下的也可以构造了。
C
一个自然的想法是建立圆方树,根据双极定向的结论,我们相当于是要选出一条方点链,然后需要在之后把这些方点链当一个点处理(也就是说,根据双极定向的要求,各个方点下面接的必须是一个“点”,而在目前是一个连通块,需要将一个连通块看作一个点)
那么就是删掉方点,然后将剩下的连通块缩成一个点,接着建立缩点后的原始图,此时原始图是可双极定向的,做双极定向划分各个点集的顺序。
那么现在我们的问题就是变成了如何找到最优的链。
考虑
转移和计算其作为路径 lca 的贡献?
先来看转移,我们枚举链下面那个点
,当 是方点 当 是圆点
注意到
再来看计算答案:
,当 是方点 ,当 是圆点。
同样地,是否有 DP 计算类似的,必然取重儿子和次重儿子?
事实上确实是这样的,方点时易证,圆点时,同样地,如果
由这个 dp,我们还知道了决策点一定是重儿子和次重儿子,因此便可以直接提取出方点链,并双极定向求解了。
D
边三连通分量板子,略去。
E
与 A 是同质化问题,这里省略。
F
涉及混合图结论
混合图
能被定向为强连通图当且仅当满足:
- 所有边看作无向边后边双连通
- 将无向边看作两条有向边后强连通
某一条无向边一定存在一种定向让其定向后仍然满足这两个性质,所以可以直接枚举判断。
G
双极定向的练习题
考虑到,我们所选的点有什么特征?先建立圆方树。
首先判掉
由于原题存在类似于双极定向的要求(后缀),因此有唯一最终点,我们将其反着看可以推出如下信息:作为起始点,需要这个点双内部仅有一个割点,并且对于所有这样的点双,有一个作为最终到达的点,其余全部需要当作起始点。
因此我们贪心地,求出每个这样的起始点双里的非割点最小点权,并舍弃最大的那一个,让它作为终点。
这样就得到了选择初始点的方案,然后考虑怎么得到答案呢?可以通过双极定向的方法,从终点开始往回走,对每个走到的点双做双极定向,然后就类似于 St->Ed
这类。
也就是最开始确定终点,终点往其所在点双的割点做双极定向,然后现在就已经走出去了,对于一个走入的割点,同样地往其所在的所有未走过的点双重复找新的割点做双极定向。
需要注意的是其他割点怎么办呢?其实是容易的,这是一个类似于递归的过程,按照双极定向走出的顺序访问这个点双内的其他割点,并递归处理即可。
回溯时就可以输出方案了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!