Day5网络流

算法

无源汇上下界可行流

 

 先强制流过l的流量

从s到每个正权点连流量为l的流量

 从每个负权点向t连-l的流量

如果容量为0,则不连边

有源汇上下界最大流

去掉下界

先求出可行流

再求S到T的最大流

 

有源汇上下界最小流

 

直接应用

poj1149

我的思路

建一个点S,到每个顾客,连INF的边,每个顾客

正解

1.用分层图,建n*m个点

2.直接从S向每个人连边,记录下每个猪圈打开的人的先后顺寻,先来的人向后来的人连边

 

BZOJ2406

Solution

 

路径覆盖模型

路径覆盖无交集

链覆盖可以有交集

起点,终点的度数都为1

最小化$n-\sum{d}$=最大化$\sum{d}$d为入度

把原图的点都进行拆点

 

路径覆盖:

若i,j有边,则从i到j'连边

所有边的边权均为1

 

链覆盖:

用floyd求传递闭包

从一个点向它能到达的点都连边

 

用最小流解决

 

链覆盖把每个点的上限改为INF

 

 

魔术球问题

 

 

Solution

 

 

 

CTSC2006

 最小链覆盖

 

 

 

Dilworth定理

例如<=号

自反性:x<=x

反对称性:x<=y , y<=x —>x==y

传递性:x<=y,y<=z—>x<=z

(<,>不满足偏序关系,不满足第二条性质)

(DAG满足偏序关系,有向图不满足)

反链:两点之间不能相互到达

 

定理:

 

TJOI2016XX数学

 

暴力

拆成n*m个点,每个点的权值下界为给定的权值,上界为INF

优化

对所有点选一条点权和最大的

从左下到右上DP

 

时间分层

 

网络流24题星际XXXX

 

当最大流为k的时候结束

 

 [HNOI2007]紧急疏散

 

 

 

 

回路限制

POI2010

 

solution

 

给每条边定向&&判断是否连通

每条边定向后会使一个点的入度加1,会使一个点的入度减1

 

先随便定向并保留一次反向机会

可以把每次反向看成一条权值为2的增广路

把点权预先除以二,验证图是否能满流

 

 

BZOJ4215

 

 

对一个网格进行黑白染色,搞成二分图

用流量为2的边去限制度数为2

 

如果图满流,那么就存在所有蛇都构成环的方案

找方案的时候看哪些边满流了

 

如果蛇不构成环,

对于边界上的点,设置其权值为[1,2],对于非边界上的点,其权值为[2,2]

求最大流

 

最大权闭合子图

模型

所有与S相连的点视为不选择

所有与T相连的点视为选择

有环的情况可以不缩点,(缩点也可以)

 

TJOI2015 线性代数

Bij*Ai*Aj

Ci*Ai

 

 

 

 

COdefoeceXXX

 

若不考虑限制条件

 

 

 限制条件

从S向新加的点连Wi边

从新加的点向中间的三个点连INF的边

 

CEOI?

 

转化为最小割

 

BZOJ3774

 

平面图对偶图

 

狼抓兔子

NOI2010海拔

 

 

相当于S和T之前求最小割

 

 

距离限制

 

HNOI拍照

 

 

变形

 

 

 

CTSC2009

根据曼哈顿距离的性质

分别最优化横纵坐标

 

 

Hall定理

k-完备匹配

首先,贪心的找最大匹配然后删去是显然不对的

证明

想要证明k-正则二分图,只需证明k-1是否存在

假设不存在

左侧的m*k条边若分给右侧<m条边,则有一条边的度数不为1

 

做法

若原图不存在k-正则二分图则无解

 

POI2009 Lyz

tag

 

 

【CERC2016】Bipartite Blanket

 

solution

证明

 

时间复杂度

$2^n*n+2^n*log n$

 

posted @ 2018-01-10 12:01  自为风月马前卒  阅读(207)  评论(0编辑  收藏  举报

Contact with me