每天需要
n
i
n_i
ni个干净的餐巾。它有三种来源,购买、之前的脏餐巾慢洗、快洗。三种花费均不相同。慢洗与快洗是使用过之后
a
,
b
a,b
a,b天后才可以使用。
为了保证每天一定有
n
i
n_i
ni个干净餐巾来使用,我们从
s
s
s向
i
i
i连一条容量为
n
i
n_i
ni,代价为
f
f
f的边,同时从
i
i
i向
t
t
t连一条容量为
n
i
n_i
ni,代价为
0
0
0的边。但是这只是一种来源的请款,我们还有其他的来源。
考虑,某一天的一些脏餐巾可能会被用到。所以,这些脏餐巾可以有一个流向,流到它往后的天数里。但是为了不影响之前的图结构,并且不重复计算那个购买的代价,我们对每一天新建一个节点,这个节点存了
n
i
n_i
ni个脏餐巾,这些餐巾有两种可能,一种是洗完重新使用,一种是传递给下一天。所以,我们从
s
s
s到
i
′
i'
i′连容量为
n
i
n_i
ni代价为
0
0
0的边,从
i
′
i'
i′到
i
+
1
′
i+1'
i+1′连容量为
n
i
n_i
ni代价为
0
0
0的边,从
i
′
i'
i′到
i
+
a
′
i+a'
i+a′连容量为
n
i
n_i
ni,代价为
f
a
fa
fa的边。
啊,做完了吧。保证
n
i
n_i
ni了吗?当然,
i
i
i到
t
t
t那条边一定流满了。跑一个最小费用最大流,即为答案。