图论建模入门
学习 这篇文章、这篇文章(没学完) 后以及对之前学的一部分套路的总结。
图论建模通常需要一定的知识积累和联想能力(从题目性质中发掘与图论模型的共性)。得到图论模型有助于理清思路、更本质地看待问题。直接的图论算法不够优秀时,可以利用图的性质来优化或反向转化。
基环树森林
- 对长为 \(n\)、值域为 \([1,n]\cap N\) 的序列 \(a\),连边 \(i\to a_i\),则得到内向基环树森林。例题:(还不会的)CF1672F1、CF1672F2。
- 更特殊的:对长为 \(n\) 的排列 \(p\),连边 \(i\to p_i\),则得到一些环(置换环)。例题:ARC189C、CF1270G。
链
将限制看成边,发现它们形成若干条链。
生成树
合并点
有 \(n\) 个点。
- 每次取出两个点 \(u,v\),造成某种贡献,再删除其中一个,直到只剩一个点。
- 每次取出两个点 \(u,v\),造成某种贡献,删除它们再插入一个新点,直到只剩一个点。
- 视作将一个点的权值改为新点权值,则同理。
- 例题:P7522。
其他二元操作
- 用区间加操作到某种状态,转到差分序列上。
- 证明环的不优性,或证明每个连通块都是一棵树(甚至一条链)最优。
- 例题:P7718、2025.10.28 T3、ABC432F。
最短路
- 直接建模:“区间覆盖”问题(可延伸至网络流)。
- 同余最短路。例题:ABC077D、P9140、CF2115E、(还不会的)P4156。
- 差分约束。例题:P3275、AGC056C、(还不会的)AGC039B、2025.10.1 T4。
欧拉图 / 半欧拉图
需要格外小心孤立点与题目中关于欧拉回路 / 欧拉路径的定义。
通常要在(完全图的)每条边的出现次数限制(不一定是恰好等于多少)下,构造一条欧拉路径 / 欧拉回路(或给无向边定向),或构造一张欧拉图 / 半欧拉图。此时我们钦定每条边的出现次数为 \(c_i\),在度数与连通性的限制下构造 \(c\) 序列。例题:CF547D、2025.9.5 T2。
序列上的欧拉回路:每个点被来回跨过的次数相同。
- 直接构造:P6628、P6168。
- 区间操作:有一个序列和若干给定的区间,要选择一些区间进行操作来满足条件。先点边互化(或视作开区间),再构造一条从序列左端到右端的欧拉路径。可能要结合最短路。
- 区间覆盖:从左到右跨过就算被覆盖。例题:P1668。
- 区间翻转:无论方向,跨过一次就算被翻转一次。例题:2025.8.27 T2。
- 区间 \(+1/-1\):从左到右为 \(+1\),从右到左为 \(-1\)。例题:CF429E。
- 序列置换:保证序列 \(a,b\) 在多重集意义下相同,要通过若干次交换使 \(a\) 变为 \(b\)。
- 排列的置换常在复合后用逆序对 / 置换环分析。而序列的置换可以如此建图:以值域中的元素为点,对于 \(1\leq i\leq n\),若 \(a_i\neq b_i\),则连边 \(a_i\to b_i\),表示要把一个 \(a_i\) 换成 \(b_i\)。由于一定有解,每个连通块都存在欧拉回路。
- 例题:2025.9.15 T2、2025.9.12 T3。
二分图
黑白染色
- 每个元素可以放进两个集合(颜色),有一些点对 \((u,v)\) 表示 \(u,v\) 不能在同一集合。例题:(还不会的)P1155。
- 网格图可以黑白染色(按 \(x+y\bmod2\) / \(x+y\) 的奇偶性),相邻点必定颜色不同。例题:AGC066A。
二分图匹配
- 网格图行列连边:把行、列看成点,格子看成边,则网格被转为二分图。例题:(还不会的)AT_jsc2019_qual_e。
- 排列 DP:将位置和值域视作左右两部点,则排列和二分图完美匹配一一对应。
- 逆用 Hall 定理 / exHall 定理:虽然这两个定理可由最大流最小割定理导出,但逆用需要熟悉它们的形式。
独立集 / 团
独立集:边表示不能同时选。独立集和团可以通过建补图互相转化。
例题:P4448、2025.11.20 T2、2025.11.12 T4。
连通性
这里指无向图中两点是否连通。
边可以表示:
- 等价关系(普通并查集)。
- 带边权,表示推导关系(带权并查集),如相对大小。
例题:P8779。
网络流
费用流:同时跑多条最短路。
NOIP 多半不考,所以先咕着。
2025.11.23
浙公网安备 33010602011771号