网络流
https://www.cnblogs.com/victorique/p/8560656.html
https://www.luogu.com.cn/blog/command-block/wang-lao-liu-xiang-guan-bi-ji
最小割建模
黑白染色,然后就变成了套路题。
首先将原图黑白染色,记黑色点数量为 \(b\),点权和为 \(B\) ,白色点数量为 \(w\),点权和为 \(W\),最终所有的数都变为 \(x\)。
那么需要的操作数为 \(b * x - B = w * x - W\),移项得到 \(x = \dfrac {B - W} {b - w}\)。
若 \(b \neq w\),\(x\) 可以直接计算出来;
若 \(b = w\),那么 \(n,m\) 必有至少一个为偶数,这种情况下,显然 \(x\) 会有单调性(考虑 \(x+1\) 时在原方案下两两匹配),二分这个 \(x\) 即可。
闭合子图建模
板子题,每个编号的宝石向它的倍数编号连边,边数 \(O(n \ln n)\),然后就变成了求最大权闭合子图。
具体做法是源点向正权点连流量为点权的边,原图的边流量设为 inf,负权点向汇点连容量为 |点权| 的边,答案即为正权点点权和减去最小 \(S-T\) 割。
板子题,同上。
匹配问题
将限制按 \(u\) 排序,则 \((u_{i-1},u_i]\) 中恰好有 \(t_i - t_{i-1}\) 个数,连边匹配即可。
有上下界的网络流
首先将每条边的初始流量设置为下界,原图的边流量设为上界-下界,这样有些点的流量是不平衡的,需要调整。
考虑新建超级源点 \(s\) 和超级汇点 \(t\),对于每个点:
若 \(in(i) > out(i)\) ,则连一条 \(s \longrightarrow i\),容量为 \(in(i) - out(i)\) 的边;
若 \(in(i) < out(i)\) ,则连一条 \(i \longrightarrow t\),容量为 \(out(i) - in(i)\) 的边。
跑 \(s \longrightarrow t\) 的最大流看是否等于 \(s\) 的出边总流量即可判断是否有可行流。
连一条 \(t \longrightarrow s\),容量为 \(inf\) 的边,则变成了无源汇问题。
先跑出可行流,然后加上残量网络上 \(s \longrightarrow t\) 的最大流即可。
和最大流一样,最后减去残量网络上 \(t \longrightarrow s\) 的最大流即可。
咕
-
每条边费用为 \(T\),流量设置为 \([1,inf]\),问题就变成了有源汇上下界最小费用可行流。
有负圈的费用流
-
\(\texttt{P7173 【模板】有负圈的费用流}\)
考虑先将负权边流满,转化为上下界网络流问题。
具体地说,将原图的边 \((u,v,cap,c)(c<0)\) 替换成 \((u,v,[cap,cap],c)\) 和 \((v,u,[0,cap],-c)\),然后跑有源汇上下界网络流即可。

浙公网安备 33010602011771号