复健笔记
P1536
把已经联通的块缩成一个,用并查集重编号,然后输出编号数 - 1 即可
P1955
\(x_1 = x_2\) 就放在一个联通块内,然后去验证 \(x_1 \neq x_2\) 的都成不成立即可
需要把操作离线下来离散化,先加并查集,然后再验连通性
P2330
最小瓶颈生成树,那直接上 kruskal 就完事了
P1821
\(n \leq 1000\),那直接跑 \(n + 1\) 遍最短路就可以了
时间复杂度 \(O(n^2\log n)\)
P1892
\(n \leq 1000\),于是就可以直接暴力找敌人的敌人了
首先把所有敌人关系存成双向图,然后枚举一个人为起点,把所有的边终点加入朋友并查集即可,也就是把第一个边终点和其他边终点分别合并
然后统计联通块个数
P3884
很简单的树上操作,因为是单次查询所以 LCA 也只需要暴力跳
P3110
首先走到一块之后就没必要分开了,除非恰好是重合的最短路径而且 \(p > b + e\)(其实这种情况下面的方法也能处理)
于是考虑枚举走到哪个点之后一起背着走,答案就是 Bessie 和 Elsie 分别走到这个点的距离加上这个点到终点的距离
也即从 1、2 开始的单源最短路和到 \(n\) 的单终点最短路(双向图,所以也是单源最短路)
P1525
最大值最小,于是考虑二分,之后做二分图染色判断,bfs即可,但是要注意二分误差
P4185
还不会
P4588
将操作视为一个按时间排列的序列,最终结果就是所有操作的乘积,于是开一个初始全是 1 的线段树维护即可
标签:复健,二分,终点,联通,短路,笔记,即可 From: https://www.cnblogs.com/handwer/p/17588705.html