提醒:本讨论可能有部分题目解法相关内容,仅用于说明观点;如果还需做题可自行关闭。
没有一篇题解是从上下界网络流的角度去理解建图的,个人认为,从这个角度理解是最为自然的。
主要思想是将第 i 天拆成两个点(即早上 / 下午),用 i→i′ 的流量下界刻画毛巾限制 ri;并将送洗操作转化为向后缀连边。答案即为该图的(有源汇)最小费用可行流:
发现存在下界的边只有 i→i′,根据上下界网络流的做法,从超级源点 S 向 i′ 连上界为 ri 的边,从 i 向超级汇点 T 连上界为 ri 的边;原图的汇点 t 向源点 s 连上界 +∞ 的边。
那么存在一条可能的流形如 S→i′→t→s→i→T,其中 s→i 费用为 pi ,S→i′ 受到 ri 的上界限制。对应着购买一块餐巾给第 i 天的情况。
而在大部分题解的建图中,略去了原图的源汇点 s,t,用 S→i,费用为 pi 的边取代了 S→i′→t→s→i 的这样一条路径。可以看出,这时原本 S→i′ 的上界限制在这里并不存在;这会造成细微的歧义,虽然在原题的数据范围下,这种做法的结果是完全正确的。
(歧义具体是:考虑给送洗餐巾数目加上限制,并存在负数送洗代价的情况,这种建图认为每天可以产生 ≥ri 块脏餐巾,而上下界的建图认为只能产生恰好 ri 块;即使 S→i,费用为 pi 的边加上 ri 的上界也如此)
所以,对简化后建图的理解应该是:钦定 i→i′ 的边有至少 ri 的流量,那么在 S→i′ 以及 i→T 连接上界为 ri 的边,通过流形如 S→i′→t→s→i 的路径(或者送洗的路径),流满之后撤去 S,T,i 就恰好出度多 ri,i′ 入度少 ri,刚好对应 i→i′ 边的流量。也即上下界网络流的思想,在减去边流量下界的图上跑最大流进行调整,使得每个点流量平衡。