网络流进阶

上下界流

  • 无源汇有上下界可行流

    • 问题:无起点终点,每条边有流量上下界,需满足流量守恒和边流量约束。
    • 解法
      1. 计算边的残余容量(上界-下界),转为[0, 残余容量]范围。
      2. 统计顶点流量盈亏(流入下界和 - 流出下界和)。
      3. 建虚拟源点S'、汇点T',S'向盈余顶点补流, deficit顶点向T'流。
      4. 若S'到T'的最大流等于总盈余,则存在可行流(原边流量=下界+辅助网流量)。
  • 有源汇有上下界最大流

    • 问题:有源点s、汇点t,求满足上下界的最大流量。
    • 解法
      1. 先按无源汇方法判断可行流是否存在(可加t→s的无穷边转化)。
      2. 若可行,在残余网络上跑s到t的普通最大流,总流量=初始可行流+新增流量。
  • 有源汇有上下界最小流

    • 问题:有s、t,求满足上下界的最小流量。
    • 解法
      1. 先确认可行流存在。
      2. 在残余网络中反向求流,从t到s跑最大流,初始可行流减去该流量即为最小流。

题目,解法

CF1307G

  • 问题:有向图+q次查询,每次可增加边权总和至多x,求最短路的最大可能值(n≤50,m≤n²,q≤1e5)。
  • 思路:猜测与费用流相关,考虑限制每条边流量为1,在流量限制下找费用流,以确定前k短不交路径的长度总和来回答查询,存在对偶做法。

CF1288F

  • 核心:处理两种点(红色、蓝色)及无色点的流量关系。
  • 无费用、无色点边时:红色点需入流>0,蓝色点需出流>0;建边(红色→T、S→蓝色、T→S,容量均为(0,inf))跑无源汇可行流;无色点需同时加入红蓝相关边。
  • 有染色费用时:将最大流改为费用流求解。

P2765

  • 问题:划分成若干条链。
  • 解法:利用“最小链覆盖=顶点数-最大匹配”结论(与此前内容呼应)。

P2763

  • 问题:n个题分配给k类知识点,每类需x[i]题,每题仅放一个位置(n≤1000,k≤20)。
  • 解法:可采用二分图带权匹配(KM算法)或最大流;因匈牙利算法常数小,O(nm)复杂度可通过。

CF491C

  • 问题:涉及二分图最大权匹配(n≤2e6,k≤52)。
  • 解法:可用最小费用流或KM算法。

POJ1966

  • 问题:无向图中最少删除多少个点使图不连通(n≤50)。
  • 解法:拆点技巧——将点x拆为in(x)和out(x),in→out连边,out(x)→in(y)连inf边(不可拆);枚举out(S)和in(T)求最小割。

混合图欧拉回路

  • 问题:求含向边和无向边的欧拉回路(n,m≤200)。
  • 思路:保证每个点出度等于总度数的一半,转化为边分配问题。

P2891 [USACO07OPEN] Dining G

  • 问题:有N头奶牛、F种食物和D种饮料,每头奶牛只接受自己喜欢的食物和饮料,且每种食物或饮料只能分配给一头奶牛,求最多能同时获得符合偏好的食物和饮料的奶牛数量(N,F,D≤50)。
  • 解法:属于双重约束下的匹配问题,需同时满足“奶牛-食物”和“奶牛-饮料”的偏好匹配,可通过构建网络流模型求解最大匹配数。

UVA11082

  • 问题:还原矩阵,满足每行、每列和,元素在1-20之间(n,m≤20)。
  • 解法:将[1,20]转为[0,19]避免上下界网络流,通过最大流处理行和列的限制。

CF1383F

  • 问题:k条特殊边,q次查询其边权时s到t的最大流(n,m≤10000,q≤2e5,k≤10,w≤25)。
  • 优化解法:
    • 基础思路:枚举特殊边子集(删除与否),跑最大流,复杂度2^k×maxflow(n,m)。
    • 优化:利用残余网络,加边后undo,复杂度降为max_flow(n,m) + 2^k×w×m。
posted @ 2025-08-13 21:37  ᝰꫛꫀꪝ_yqy  阅读(21)  评论(0)    收藏  举报
/**手机适配**/ @media only screen and (max-width: 767px) { header{width:100%} .banner{width: 100%;height: 100px;} .avatar{width: 80px;height: 80px;margin: 6px;} .avatar a{padding-top: 59px;width: 80px;height: 80px;background-size: 80px 78px;} .avatar a span{margin-top: 0px; padding-top: 0px; width: auto;height: auto;} .bloglist h3 {margin: 20px 0 10px 10px;} .bloglist figure {width:auto;margin-left: 4px;} .bloglist figure img {width: 90px;height: 60px;} .bloglist ul{width:64%} .dateview {width:100%;padding-left:4px;} .dateview span {margin: 0 3px;} .weixinnone,.thumbs{display: none} .right{width: 100%;margin-top: 22px} .right ul{width:64%;margin-left: 22px;} .weather{margin: 20px 50px;} .bloglinkli{display: block} footer{width:100%} }