图论进阶

推荐资料

Alex_wei

高级图论 图论1 图论2

状态图

知识点

什么是图?一些点和边的集合。
什么是状态?一个闭包状物,包含了当前需要的信息和推导下一个状态需要的信息。
所谓状态图,就是:

  • 每个状态成为一个点;
  • 每个合法操作成为一条边;
  • 边权等于这次操作增加的代价;
  • 初始状态到目标状态的最值距离/方案数,就是最优代价/方案数。

一种常见的状态图就是分层图,实际上就是把需要的额外信息打包到点里。

其实 DP 本质就是在一个状态图上跑。

P5663 [CSP-J 2019] 加工零件

题目大意

给定 $ n $ 个点、$ m $ 条边的简单无向图。每次询问给出点 $ a $ 和正整数 $ L $,判断是否存在一条从 $ a $ 到 1、长度恰为 $ L $ 的游走。

\[1 \leq n, m, q \leq 10^5, \ 1 \leq L \leq 10^9, \ 1s, 250MB. \]

解题思路

反复经过一条边奇偶性不变,发现答案的判定和奇偶性有关,(如果奇偶性相同,可以反复走边直到满足长度限制)于是建立分层图,两点之间奇偶互相连边。记录 \(f_{v,p}\) 表示从 1 走到点 \(v\) 奇偶性为 \(p\) 的最短路,最后判断一下最短路长度是否 \(\le L\),是否与 \(L \bmod 2\) 奇偶性相同。

启发:发掘题目关键是奇偶性,直接处理比较难,并且有后效性,不妨把奇偶性计入状态,建立状态分层图。

P5100 [JOI 2017 Final] 足球 / Soccer

题目大意

在整数点矩形 \([0, H] \times [0, W]\) 中有 \(N\) 名球员,第 \(i\) 名球员初始位于 \((X_i, Y_i)\),球最初由球员 1 控制。

  • 球员沿横向或纵向移动、盘带正整数 \(p\) 个单位,疲劳增加 \(Cp\);
  • 控球球员沿横向或纵向踢球正整数 \(p\) 个单位,疲劳增加 \(Ap + B\);
  • 球与球员位置相同时,该球员可以控球。

求让球员 \(N\) 控球的最小总疲劳。

\[1 \leq H, W \leq 500, \ 2 \leq N \leq 10^5, \ 0 \leq A, B, C \leq 10^9。3s, 250MB。 \]

解题思路

首先如果球所在位置没有球员,那需要一位离它最近的球员走向它,于是我们先用 bfs 处理出所有位置离他最近的球员距离是多少,这一块复杂度 \(O(HW+N)\)。

我们考虑建造分层图,分 3 层,第一层负责球员控球移动(操作1),第二层负责控制操作 2 的横向踢球,第三层负责控制操作 2 的纵向踢球。

注意:这里横向和纵向不能放在同一层,也不能互相连边,因为球不会拐弯 /doge。

但有一个问题,就是在第一层,球员会移动,球员位置发生改变,那预处理是否无效了呢?

这里有一个重要的性质:就是一个球员最多控一次球。因为如果他把球踢出去后,自己又重新控制回来,明显不如自己继续带,所以不影响最优解的计算。

做完了,\(O(HW \log HW)\)。

启发:有时候计算过程中会出现不合法的状态,或者难以处理的状态,但是如果它并不会影响最终答案,我们就不用去理他。

同余最短路

先看一下 Alex_wei 的高级图论吧,哪里有详细解释与例题,课件里有的它都有。 还有一篇神秘文章 同余最短路的转圈技巧

差分约束

知识点

形如 \(x_u-x_v\le w\),可以转化为等价的三角形不等式 \(x_u\le x_v+w\),因为可能有负权,可以用 SPFA 跑了,如果出现负环那么说明无解。

所有约束先统一成 \(x_v \leq x_u + w\),再连 \(u \to v_o\)

总结一些常见的形式:

原约束 标准形 边
\(x_v - x_u \leq c\) \(x_v \leq x_u + c\) \(u \to v\)(权 \(c\))
\(x_v - x_u \geq c\) \(x_v \leq x_u - c\) \(v \to u\)(权 \(-c\))
\(x_v = x_u + c\) 两个方向 \(u \to v\)(权 \(c\)),\(v \to u\)(权 \(-c\))

一些注意事项:

  • $ x_v - x_u \geq w $ 改写为 $ x_u - x_v \leq -w $;

  • $ x_v - x_u = w $ 拆成两个方向的不等式;

  • 区间和约束先用前缀和变量改写成差。

  • 以上讲的都是相对约束,如果是形如 \(x_u\le w\) 这种是绝对约束,需要建立数值源点与之相连。

源点

算法源点:

正确性依赖每条边都被松弛,因此最短路源点要能访问到所有边。一种合法的方式是增加超级源点 $ s $ 向所有点连 0 边。

数值源点:

我们为了使所有约束都是相对约束,添加变量 $ x_0 $ 作为数值源点,绝对约束就可以化成和 $ x_0 $ 的相对约束,同时最后减去 $ x_0 $ 最后的值就是一组合法赋值了。(由于常常用 $ x_0 $ 作为起点所以值大概率是 0)

一般的差分约束不认为两者等同,但是如果恰好数值源点 $ x_0 $ 已经能访问所有点了那么就没有必要添加算法源点。

一些性质

  1. 差分约束系统有可行解,当且仅当约束图不存在负环。

  2. 最紧上界:若 \(x_0=0\),从 \(0\) 出发到达 \(v\),\(dis_v\) 就是 \(x_v\) 的最大值。

AtCoder AGC056C

posted @ 2026-10-16 10:33  lcx_OIer  阅读(5)  评论(0)    收藏  举报