lgFlow

lgFlow

  • FF Algo

原始的网络流算法,是 EK/Dinic 的祖宗。

退流思想:添加反向边进行反悔。

  • EK/Dinic

注意!Dinic 算法中当前弧优化是必要的

  • P2045

建图技巧1:限制取的次数,拆点法

  • P3358

建图技巧2:区间限制,前缀和方式

如何表达限制: 两种表达的形式:

  1. 用容量表示“流不过去”来限制最多贡献的次数

  2. 用流量(水少)来表示限制贡献的次数

本题要用到第二种,因为用第一种无法保证流流在正确的位置。

  • CF277E

网络流问题,可以考虑构造性的思路,即考虑答案如何构造出来的。

根据我们生成树的经验,每一个儿子都要且只能选择一个父亲(若是根,考虑以汇点为根),而在本题,每一个父亲只能被选择2次。

建图技巧3:选择-限制次数模型

从S到选择的主体为其添加选票,从主体到目标连接以贡献选票,目标拆点/连到T限制贡献次数。本题由于每个点又是目标又是选民,为了防止自己贡献自己,故拆点。

  • CF863F

我们依旧考虑构造性的思路,即每个点可以选择一个数

但是这个平方的贡献咋办呢,必须把它处理成加法,必须是独立的

建图技巧4:平方可以拆成奇数的和

建图技巧5:不要忘记最小费用的最优性和最大流的最大性会对流的走向进行限制

  • P4249

不是很像网络流问题,所以我们必须考虑


  • 无源汇上下界可行流

先全流下界,这样满足流量限制,但是不一定可以流量守恒,我们建立S,给差流量的点添流量,建立T吸收多了流量的点的流量,跑maxflow看这些能不能满流,如果可以,表明调整成功。

  • 有源汇

把 T 连到 S,把多流的还给 S,T和S流量就对了

  • 有源汇上下界最大最小流

  • 负环费用流

有负环的时候,由于负环实际上有容量限制,不像最短路问题里可以无限贡献,所以我们强制其满流,将其转化为反向边,然后借助无源汇上下界可行流的方法进行流量调整,然后正常求最小费用最大流。

  • 图的匹配/覆盖

对于任意图,都有

对于二分图:最大匹配等于最小点覆盖。

posted @ 2024-08-25 20:57  haozexu  阅读(16)  评论(0)    收藏  举报