zoukankan      html  css  js  c++  java
  • 网络流知识总结

    网络流知识总结

    此片略过网络流基础知识及定义,重点讨论用法

    最大流(最小割)

    众所周知,最大流的主流算法为Dinic,Isap及预流推进,此处不予以介绍

    二分图匹配模型的转化

    很多看似复杂的网络流问题都可以将其转化成二分图模型.
    1.给你一些点,让取一些点,不取一些点,选取的点和不选取的点之间都有代价
    那么显然可以理解为将一个图分为两个点集的最小代价,那么也就可以理解成花最小的代价割掉一些边,使两个点集之间没有边能互通

    有上下界的网络流

    基本建模:对于一条边的上下界限制(如果是点就拆点当边做):
    1.新建源点汇点,也就是有两对源汇.(有些题可以不用新开但有些题必须新开,根据题目选择)
    2.该点入点连接新汇点,出点连接新源点,容量都为下界,入点连接出点,容量为上下界之差
    3.判断满足条件的情况就是上述前两类边都满流(流满下界嘛)
    这样很多看似较难的问题都可以用这种方法解决

    求割边最小的最小割

    1.先按原图跑一遍最大流,再将满流的边流量设为1(能割的),和INF(不能割的),第二次的最大流即是个数
    证明:不会
    疑问:如果第一遍的网络流得到的满流边们不够优秀怎么办..

    2.设边数位E,则每条边权值w=w*(E+1)+1,跑一边最大流Flow,
    则MaxFlow=Flow/(E+1),个数=Flow%(E+1)
    证明:
    上述操作就相当于将边权转换成(E+1)进制数,其十位是原边权,个位是1
    那么上述结果就显然了
    不足:容易爆longlong啊..

    费用流

    目前还没怎么应用…

  • 相关阅读:
    codeforces 363B
    hdu 1075 字典树
    D
    C A Simple Job
    Washing Plates 贪心
    HDU 4143 A Simple Problem 分解因式
    ACdream 1236 Burning Bridges 割边 + 去重边
    E. Beautiful Subarrays 字典树
    反素数 -- 数学
    Codeforces Beta Round #79 (Div. 1 Only) B. Buses 树状数组
  • 原文地址:https://www.cnblogs.com/functionendless/p/9439361.html
Copyright © 2011-2022 走看看