zoukankan      html  css  js  c++  java
  • 网络流学习笔记

    最大流

    Dinic 和 Hlpp,这两个比较常用的,我一般选择后者,不过要输出方案的话最好是用 Dinic。

    放一个封装好的 HLPP,这个版本是不遵守流量守恒的,大概率会有流量没有退回源点。

    Oiwiki

    最大流最小割定理

    对于 的定义以及一些结论与证明,可以参考 Oiwiki

    我理解的证明分两部分,一部分证明 “最小割 (ge) 最大流”,另外一部分就是构造出一种情况使得 “最小割等于最大流”。

    前者的理解,可以偏抽象,将割边视作断掉的边,使得源到汇无流量,那么这个 (ge) 成立。

    后者的话,只要将汇单独划入另一个集合,就是一个 (=) 号成立的方案。

    只要定义理清证明就不难。

    最大流最小割定理的运用

    根据定理,我们可以随时将最大流问题和最小割问题相互转化,以下就是一道很不错的例题:

    CF1383F

    对于每条特殊边,我们考虑是否将其划入割边的集合,能够得到一个当前的最小割。将最大流问题转化为最小割之后,就可以将所有 (2^k) 种情况中 其它边 组成的最小割(最大流)先跑出来,然后将这些边的贡献加入,就可以求出每次的最小割。至于这个预处理部分,是可以在其它情况的残量网络的基础上跑若干次増广路得到。


    最小费用最大流

    和最大流的区别在于:每次寻找边权的最短路进行增广。

    那么由于边权的存在,跑分层图用 SPFA 就会【】。但是负边权的存在又会导致 Dji 无法正常工作。

    给边加权非常难受,还要记录经过的边数,具体实现……也非常不尽人意。

    考虑给点加权以后,终点为当前点的一条路径的权值会加上当前点的新增点权。

    具体的内容可以参考 this

    Code

    $$ exttt{Dirty Deeds Done Dirt Cheap}$$
  • 相关阅读:
    什么是API
    Maxiee的Vim入门日记(4)——安装windows下的Cscope
    将字符串变成大写----C++实现
    POJ 3254 炮兵阵地(状态压缩DP)
    UIKit和Core Graphics绘图(三)——绘制虚线,椭圆以及饼图
    CRC 模式及实现
    [HDU 1317]XYZZY[SPFA变形][最长路]
    poj 2155 Matrix
    [置顶] Application,Session,Cookie之Application对象
    [Todo] Java及C++ Exception整理
  • 原文地址:https://www.cnblogs.com/zjjws/p/14443022.html
Copyright © 2011-2022 走看看