1 条题解

  • 0
    @ 2025-8-24 21:47:51

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar YLWang
    别等到一千年以后 所有人都遗忘了我

    搬运于2025-08-24 21:47:51,当前版本为作者最后更新于2021-06-06 12:01:54,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    本文内容基本摘自 dxm 论文并对其作了部分注释。

    费用流求解线性规划

    考虑一个费用流。每条边 uvuv 的流量设为 fuvf_{uv},容量设为 cuvc_{uv},费用设为 wuvw_{uv}bub_u 设为流出-流入。

    限制形如 fc-f\ge -cvfuvvfvu=bu\sum_{v}f_{uv}-\sum_{v}f_{vu}=-b_u。目标形如 minimizefw{\rm minimize} \sum fw

    fuv-f_{uv} 的对偶变量 zuvz_{uv}pup_uvfuvvfvu\sum_{v}f_{uv}-\sum_{v}f_{vu} 的对偶变量。

    限制形如 pvpuzuvwuvp_v-p_u-z_{uv} \le w_{uv},目标形如 maximizebupucz{\rm maximize} \sum-b_up_u-\sum cz

    含义是取了 pvp_vwfvwwfwv\sum_{w}f_{vw}-\sum_{w}f_{wv},取了 pu-p_uufuwufwu\sum_{u}f_{uw}-\sum_{u}f_{wu},取了 zuvz_{uv}fuv-f_{uv}。 对于 uv{uv} 这条边来讲,这些系数加起来是要 wuv\le w_{uv} 的。 (只有 fwvf_{wv}fuvf_{uv} 有贡献。)

    然后整理:

    ${\rm minimize} \sum_{u}b_up_u+\sum_{uv} c_{uv}\max(0,p_v-p_u-w_{uv})$。

    于是这就给我们提供了一个机械化的费用流求解形如上面问题的做法。

    [ZJOI2013] 防守战线

    若干限制形如 j=liriAjdi\sum_{j=l_i}^{r_i} A_j \ge d_iminimizei=1nCiAi{\rm minimize} \sum_{i=1}^nC_iA_i

    sol:一种做法是直接对偶跑单纯型。

    另一种做法是直接硬来。考虑设一个前缀和数组 pp。那么限制就是 pi+1pi0,pRpL1dip_{i+1}-p_i\ge 0, p_R-p_{L-1}\ge d_i

    然后把后边那个用无限大的系数乘上就好了。目标函数就是

    $$\sum_{v}(C_v-C_{v+1})p_v+\sum_{v} \infty \max(0,p_i-p_{i+1})+\sum_{v} \infty \max(0,p_{L-1}-p_{R}+d_i) $$

    很好,就是上边的形式。然后写网络流。以下设 (c,w)(c,w) 表示容量为 cc, 费用为 ww

    是个多源多汇的形式。我们不妨令CvCv+1C_v-C_{v+1}为正的是源点,其余为汇点。从 i+1i+1ii 连边 (,0)(\infty,0),从 RRL1L-1 连边 (,Di)(\infty,-D_i),从 n+2n + 2 向源点加 (CvCv+1,0)(C_v-C_{v+1},0),从汇点向 n+1n+1(Cv+1Cv,0)(C_{v+1}-C_{v},0)。跑最小费用最大流后把答案取负数即可。

    至于这个费用流的含义我没有细想过,感觉十分复杂。如果有简明的阐释麻烦教教,谢谢了。

    • 1

    信息

    ID
    2410
    时间
    1000ms
    内存
    125MiB
    难度
    6
    标签
    递交数
    0
    已通过
    0
    上传者