网络流专辑 转自notonlysuccess

来源:互联网 发布:包子冷冻生坯技术 知乎 编辑:程序博客网 时间:2024/04/30 00:24

网络流是ACM里非常重要的一大块,变形非常灵活,这些天仅仅只是做了一点点题目,几个经典模型,冰山一角而已.
图论可不是练两天就能掌握的,所以也就放弃了一口吃成胖子的想法,打一场持久战,有空的时候更新几道并在下边写点解题报告,所以暂时不可能成为一篇非常完整的整理
所以我在下文加了几个相关链接,都是大牛们的整理,并且也有这对题目的相关分析…

网络流的题如果直接看分析就浪费了最重要的思考过程,所以先隐藏建图,选中之后出现分析

(发现这个新的主题字体白色也看的见=,=先不管了,就这样吧)

  1. hdu3046 Pleasant sheep and big big wolf

    1连源点,2连汇点,容量无限,各个格子间连边容量为1,求最小割

  2. hust1024 dance party

    拆点,二分答案—建图:源点到男孩1的边容量为二分的值,女孩1到汇点的边容量为二分的值,男孩1到喜欢女孩1的边容量为1,男孩1到男孩2的边容量为k,男孩2到不喜欢女孩2的边容量为1,女孩2到女孩1的边容量为k,求最大流

  3. hdu1569 方格取数(2)

    经典题目,按国际象棋黑白染色,源点到黑点容量为数字,黑点到它周围的白点容量为无穷,白点到汇点容量为数字,最后答案为总值减去最小割

  4. pku3469 Dual Core CPU

    源点连到点的容量为Ai,点到汇点的容量为Bi,对于m个关系建容量为w的双向边

  5. hdu2732 Leapin’ Lizard

    先抱怨下着题的英语写的太恶心了…拆点,每个点容量为它的数字,让后按d的距离可以跳到的点建容量无穷的边,可以跳出去的点和汇点建容量无穷的边,源点和每个L建容量为1的边

  6. sug438 The Glorious Karlutka River =)

    经典题目,加上时间限定条件,并且容量在点上,需要拆点,假设答案时间是T,那么每个点都要拆成2*T个点
    具体建法:S->SS为人数,SS->V无穷,UT,1->UT,2为点的容量,UT-1,2->VT,1无穷,UT-1,2->UT,1无穷,UT-1,2->T无穷
    效率关键是看怎么建图个方案和答案T的枚举,我用了四个方法,时间效率比较如下:
    sap(邻接表)按时间从小到大遍历,每次都重新建图重新增广2173MS
    sap(邻接表)二分时间,每次都重新建图重新增广409MS
    EK(邻接表)按时间从小到大,但是每次增加2*n个点后在原来的基础上增广47MS
    sap(邻接表)按时间从小到大,但是每次增加2*n个点后在原来的基础上增广(但是dis和gap初始化)772MS
    (这里sap比EK还慢,也许是因为每次推的时候dis和gap清空了(不初始化的话答案不出来),所以推的很慢,不知道有没有更好的算法)

  7. sug176 Flow construction

    经典题目,有上下界的最小流,做法入下
    1.in[v]表示以v为终点的边的下界之和,out[u]表示以u为起点的边的下界之和
    2.虚拟出ss,tt,连(ss,in[v])和(out[u],tt)
    3.做一次maxflow(ss,tt)
    4.加一条t->s的inf边
    5.再做一次maxflow(ss,tt)
    6.如果两次maxflow之和 < in之和,则不存在可行流
    7.最后答案为f[t -> s]既inf – 残余[t -> s]

  8. hust1342 Cheat Secretly

    同上题,前几天比赛被这题虐了…赤裸裸的下界最小流,学了后顺秒

  9. hdu1733 Escape

    本质和sug438 The Glorious Karlutka River =)一样,建图比那那稍微烦一点点..

  10. pku2396 Budget

    虚拟个源点,流入coli的上下界为col[i],coli到点ij的流量为inf,点ij到rowj的上下界为自己本身的限制,rowj到虚拟汇点的上下界为row[j],求满足条件可行流
    和最小流的一样建图,然后做一次maxflow,如果和in的总量相同则有解,输出每个点的流量

  11. sug454 Kakuro

    没看到第二个条件.每行里不能有相同的数字,于是悲剧了,构造不出这种限制,不能用最大流做,试试用DLX

  12. hdu2883 kebab

    很巧的一道题目,附出题人的解题报告:
    将所有的到达时间和结束时间按升序排序,得到 x <= 2n-1 个时间区间。建立网络流模型:s为源,t为汇,每个顾客i作为一个结点并连边(s, i, ni*ti),每个区间j作为一个结点并连边(j, t, (ej-sj)*M),其中sj, ej分别表示区间j的起始时间和终止时间。对任意顾客i和区间j,若 [sj, ej] 完全包含在 [si, ei] 之中,则连边(i, j, INF)。若最大流等于 ∑ni*ti 则是 Yes,否则是 No。

  13. hdu3061 Battle

    经典题目,附出题人的解题报告:
    这是一个最小割的模型,具体的构图是:
    从源点连接正权的点,流量上限为该点的权值;
    从负权点连接汇点,流量上限为该点权值的绝对值;
    所有具有拓扑关系的点直接,从st连接end一条INF上限的边;
    求出最大流,最后用所有正权点的和减去最大流(最小割),便是答案。
    具体请参见07年的集训队论文《最小割模型在信息学竞赛中的应用》

原创粉丝点击