Contest5401 - 网络流-2

1 minute read

Published:

Contest

笔记

非常好文章:二分图与网络流 学习笔记

一些定义

  • 匹配:没有公共点的边集
  • 边覆盖:满足任意顶点都至少是一条边的端点的边集
  • 点覆盖:满足任意边都至少有一个端点在集合内的点集
  • 独立集:任意两点互不相连的点集
  • 团:完全子
  • 图 $G = (V,E)$ 的补图:建出 $K_{V}$ 后删掉所有 $E$ 中的边后的

一些 NPC

  • NPC 一般图最大独立集
  • NPC 一般图最小点覆盖
  • NPC 一般图最大团
  • 一般图最大匹配 不是 NPC

一些结论

  • 最大团 = 补图最大独立集
  • 最大流 = 最小割
  • 平面图最大流 = 平面图最小割 = 对偶图最短路
  • 最大独立集 + 最小点覆盖 = 总点数
  • 二分图最小点覆盖 = 二分图最大匹配 = 总点数 - 二分图最大独立集
    • 二分图最小带权点覆盖 + 二分图最大带权独立集 = 所有点权之和

A 吃饭

P2891 [USACO07OPEN] Dining G

令食物点为 $P$,饮料点为 $Q$,牛点为 $C$。

  • 把每个牛点 $C_i$ 拆成两个点 $C_{i,1}, C_{i,2}$,连边 $C_{i,1} \xrightarrow{1} C_{i,2}$。
  • 对每个食物点 $P_i$ 连边 $s \xrightarrow{1} P_i$ 和 $P_i \xrightarrow{1} C_{j,1}$。$C_j$ 为喜欢 $P_i$ 的点。
  • 对每个饮料点 $Q_i$ 连边 $C_{j,2} \xrightarrow{1} Q_i$ 和 $Q_i \xrightarrow{1} t$。$C_j$ 为喜欢 $Q_i$ 的点。

跑最大流即可。

B 打扫卫生

建二分图,左部点是行,右部点是列。对于每个垃圾 $(x,y)$,连 $x \rightarrow y$。

跑二分图最小点覆盖即可。

C

P3355 骑士共存问题

棋盘黑白染色,白格能攻击到的位置必然是黑格。

跑二分图最大独立集即可。

D 最大获利

P4174 [NOI2006] 最大获利

一篇不错的题解:题解:P4174 [NOI2006] 最大获利

令中转站点为 $P$,用户点为 $Q$。

  • 对每个 $P_i$ 连边 $s \xrightarrow{cost} P_i$,其中 $cost$ 为建这个中转站的代价。
  • 对每个 $Q_i$ 连边 $A_i \xrightarrow{\infty} Q_i$,$B_i \xrightarrow{\infty} Q_i$,$Q_i \xrightarrow{income} t$,其中 $income$ 为收益。

跑最小割即可。

答案为 $(\sum income) - dinic()$。其中 $dinic()$ 为最小割。

为什么是对的

  • 割掉中转站的边,意味着使用这个中转站。
  • 割掉用户的边,意味着舍弃这个用户。
  • 未被舍弃的用户必须连着被割掉的中转站,从而导致图不连通。所以是求图的割。
  • 所有用户的收益 - (被舍弃的用户 + 使用的中转站) = 利润。
  • (被舍弃的用户 + 使用的中转站) 最小,利润最大。

E 卖猪

TODO:

F L型图形

TODO: