网络流模型多而且杂,从今天起做个笔记吧,很多模型是互通的

模型Ⅰ.隐含的二分图,三分图

这 是 个 重 点 。 \color{Red}这是个重点。

1.1 二 分 图 1.1二分图 1.1

网络流24题方格取数

题目要求相邻格子不能同时取数,求最大价值。

你一定很疑惑,这也能网络流?能,因为这是一个二分图。

把整个网格图黑白染色,也就是按照 ( i + j ) % 2 (i+j)\%2 (i+j)%2来分成两类

神奇的发现在同一类的格子就算全拿下来也不会造成矛盾

他们彼此不会相邻,因为是黑白相间染色,所以肯定的嘛!!

而不同类间的格子如果相邻,才不能同时拿,否则还是可以同时拿。

不能同时拿代表一种限制,所以用一条边连接起来

因为不能同时拿,我们用最小割可以方便的求出解来。

所 以 按 照 ( i + j ) % 2 分 为 0 类 和 1 类 所以按照(i+j)\%2分为0类和1类 (i+j)%201

0 类 放 在 二 分 图 左 边 , 和 源 点 连 边 , 流 量 是 格 子 的 价 值 0类放在二分图左边,和源点连边,流量是格子的价值 0,,

1 类 放 在 二 分 图 右 边 , 和 汇 点 连 边 , 流 量 是 格 子 的 价 值 1类放在二分图右边,和汇点连边,流量是格子的价值 1,,

然 后 0 类 向 和 自 己 相 邻 的 1 类 连 边 , 边 权 i n f , 仅 表 示 一 种 连 接 关 系 然后0类向和自己相邻的1类连边,边权inf,仅表示一种连接关系 01,inf,

那 么 跑 最 小 割 , 这 样 有 限 制 的 格 子 一 定 是 分 别 割 到 s 或 t 去 , 求 解 完 成 。 那么跑最小割,这样有限制的格子一定是分别割到s或t去,求解完成。 ,st,

1.2 三 分 图 1.2三分图 1.2

教辅的组成

上面的那题是入门题,可以先写一下。

P5458 [BJOI2016]水晶

这题才是比较不显然的。(看出来就很简单)

首先处理一下每个点的 ( x , y , z ) (x,y,z) (x,y,z)不唯一

那么这个点相当于 ( x − z , y − z ) (x-z,y-z) (xz,yz)就唯一了

因为 x , y x,y x,y方向都走一格相当于 z z z方向走一格

只考虑当前能量源,如果它的上面有一块水晶

那么其左上右上和下面三个位置,都不能有水晶。

以此类推,对于一个能量源,它的左上右上下面这三个位置是同一类的

而另外三个位置属于另一类,再加上中间的能量源属于第三类

所以这题是按照 ( x + y + z ) % 3 (x+y+z)\%3 (x+y+z)%3分成一个三分图

三分图连边需要拆点,把一个点 a a a拆分为 a a a a ′ a' a

a 和 a ′ 连 流 量 为 价 值 的 边 a和a'连流量为价值的边 aa

因为这样才能保证每个点都能被割去

模型Ⅱ:最大权闭合子图

最大获利

问题,做法解释

CF277E Binary Tree on Plane

题 意 : 有 一 些 点 和 一 些 带 权 有 向 边 , 求 构 成 二 叉 树 的 最 小 权 和 题意:有一些点和一些带权有向边,求构成二叉树的最小权和 :,

模 型 \color{Red}模型

难点在于无法处理只有一个父亲可至多有两个儿子

我们可以拆点,把点 i i i拆分为 i i i i + n i+n i+n

i i i和源点相连流量为2,表示可以作为2个节点的父亲

i + n i+n i+n和汇点相连流量为1,表示只可以有1个父亲

那么对于有向边 ( i , j ) (i,j) (i,j)意义很明显了,因为 i i i作为父亲而 j j j作为儿子

所以连接的边实际上是 ( i , j + n ) (i,j+n) (i,j+n),这样跑最小费用最大流即可

完整代码戳我