区间覆盖
[1,n] 中 m 个区间 [li,ri],代价 wi,个数 ci。要求使每个点被覆盖 [aj,bj] 次。
用边 i→i+1 的流量描述 i 被覆盖的次数。设总流量 lim=maxbj。连边 (li,ri+1,ci,wi) 和 (j,j+1) 流量为 [lim−bj,lim−aj] 费用为 0。每当 i 被覆盖一次,i→i+1 流量就少 1。
上下界网络流,如果 b 都相等,就没有下界变成普通费用流了。
给点 w1,⋯wn。有一个长为 m 的初始全零的序列 a。q 次请求 ki,如果不存在 apos=ki,加 wki 代价使一个位置 apos=ki。
转换为最多减去多少代价。等价于:对于上一个 kp=ki 的请求 p,如果 p 到 i 都一直不动 p 处取到 kp 的位置,就能减少 wki 的代价。即线段 [p+1,i−1],最后每个点被覆盖 ≤m−1。
选择价值最大的一些区间,对区间按包含关系连边,要求不成环。
等价于:没有三个互相相交的区间。即每个点被覆盖 ≤2 次。
n 个小时,睡觉和吃饭价值分别为 si 和 ei。要求每 k 个小时睡 me 和吃 ms 小时。
先当做全睡觉,再选一些位置变为吃饭。等价于:把 i 小时吃饭看成区间 [i,i+k),对于 i≥k 的位置被覆盖 [me,k−ms] 次。