集训游记 7.19-7.20 图论
最小生成树 MST
P5994 [PA2014] Kuglarz
考虑连边
容易发现
考虑最终局面,一定要推出每个
最小生成树
k条白边最小生成树
二分附加权.
注意最后的方案,MST 上可能存在代价为
考虑优先选白边.在白边数量
- 合法答案存在于白边
的时候. - 保证白边
的时候,附加权越大是一定能构造出合法答案.
树的重心
定义
- 到所有点的带权距离之和最小的点(定义一)
- 使得最大子树大小最小的点(定义二)
如何从定义一推出定义二呢?一个点若存在一个大小大于
性质
- 两个树相连,新重心在原来的两棵树重心的路径上.
无向图 DFS 树
从
无向图 DFS 树有一个很好的性质:一个点子树中的点互相没有边.
可以解决一些奇怪的题目.
[BZOJ4878]挑战NP-Hard
建出任一棵 DFS 树,若树深度
拓扑排序
最短路
严格次短路
结论:严格次短路上一定存在一条边,使得它不属于原来的 任何一条最短路.枚举次短的边是哪一条即可.
考虑最短路 DAG,若严格次短路经过的全部都是属于某一条最短路的边,它是最短路 DAG 的一条路径,它就是最短路!
换一种严谨的证明方式,记
01 BFS
和我 基础图论 中的内容不谋而和.
当然学到了一点奇技淫巧.比如若存在
同余最短路
比较神仙的.
优化完全背包判定.
给定数集
将
其实我感觉根本不需要证明.看上去就十分正确!
我们选择
话说 Alex_Wei 是不是有一个同余最短路的转圈技巧,没学过.
优化构图
很多时候最短路模型存在边数为枚举点对数量级的构图方式(近似完全图),边数近似
然后我们就需要 优化构图.
有两种一般的思路:
-
存在可以被替代(被表达)的无用边.
比如经典的切比雪夫距离模型:点对 的距离为 .那么我们只需要按 排序后顺序连接相邻的边,按 排序连接相邻的边.因为若 中间存在 ,那么距离 可以被 表示.对于 同理.
看似简单,实则有深意!有技巧!
构造表达无用边的方式十分有趣.看一道例题:
给定图 ,除了原有边集 以外,可以额外花费 的代价从 走到 .求 到 的最短路.
我们考虑转化 的代价.其实可以看成 反转若干二进制位的数字.对于一个数,我们不妨只考虑反转每一个二进制位的代价.那么 的代价可以表达成一条路径(先反转其中一位,然后得到新的数字,再反转另一位. . .). -
从一个点出发的联边满足某种相同约束.
比如 向区间 建边,可以使用线段树优化建边.
据老师说一般数据结构(线段树,平衡树)优化构图无法维护 Lazy_Tag.
网络流
Dinic
复杂度:一般图
像 大概存在靠谱而保守的数据规模.用网络流水
网络流优化构图
其实和一般建模的优化构图还是有些不一样的.一般考虑
- 度数为
的点去掉 - 两个点之间重复的边优化成一条
问题杂技
HackerRank - Unique Colors
考虑对于每种颜色分开考虑.
对于每一种颜色,它会把整棵树分成若干个联通块:全部为颜色
分开考虑:
-
对于颜色为
的点,每一条经过它的路径都存在颜色 .这样的路径一共有 条. -
对于颜色不是
的点 ,考虑其不经过颜色 的路径个数:要保证路径端点在同一个联通块中.那么从 出发经过颜色 的路径个数即 .
每一个点的答案可以这样算:
树上差分即可.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)