「学习笔记」浅谈网络流中的一类区间选择模型

摘自 ix35的博客


首先给出区间选择模型的一个定义:

区间选择模型:给定 \([1,m]\) 中的 \(n\) 个区间 \([l_i,r_i]\),每个区间选择一次的代价为 \(w_i\),最多可以选 \(c_i\) 次,要求使得任意点 \(j\) 被覆盖次数在 \([a_j,b_j]\) 之间,求最小 / 最大代价。

做法:

\(1\)\(m+1\) 连成一条链,尝试用 \(i\to i+1\) 边的流量刻画 \(i\) 被覆盖的次数。对于一个区间,我们连边 \(l_i \to r_i + 1\),称为区间边,如果区间边上流过 \(1\) 单位流量,就表示选择一次这个区间。

源流向 \(1\)\(m+1\) 流向汇,此时先假设确定了总流量为 \(X\),那么没有流经 \(i\to i+1\) 的流量就是选择了跨过 \(i\) 的区间,所以 \(i\to i+1\) 的流量为 \(X-f_i\) 时就表示 \(i\) 被覆盖了 \(f_i\) 次。

因此,如果我们要限定一个点被覆盖次数在 \([a_i,b_i]\) 之间,只需要设定 \(i\to i+1\) 的流量上下界为 \([X-b_i,X-a_i]\),然后将区间边费用设为区间代价,容量设为可选次数,最小 / 最大费用上下界最大流即为答案。

其中 \(X\) 可以选取任意一个充分大的数(不小于 \(\text{max} \{b_i\}\))。

但是在实际应用当中我们常常不会真的去写上下界网络流:当所有 \(b_i\) 相等时,只需令 \(X = b_i\) 就没有下界了,跑普通的费用流即可。

posted @ 2022-09-27 19:20  came11ia  阅读(92)  评论(1编辑  收藏  举报