- 题意
餐巾计划问题(费用流经典题),数据加强($1 \le N \le 10^5$)。
Solution
设$f(x)$代表购买$x$个新玩具所需要的最小花费,那么$f$是一个单峰的函数,可以使用三分法求解。
$f(x)$可以通过贪心的方法求出,这个稍后详细介绍。接下来简单说明一下这个单峰。假设当$x=t$时有最优解$f(t)$。若取$x = t+1$,那么就会多了一个新买的玩具没有用,浪费了,不会出现更优解,不难发现当$x = t + k ( k \in N^* )$,该结论均成立;若取$x = t - 1$,考虑使用费用流求解时,也就是有有一条在最短路上的边没有走,可能走的是其他最短路径或者次短路,也不会出现更优解,$x = t-k$时类似。
- 然后说说贪心法计算$f(x)$。为了方便描述,不妨设$c1 \le c2$不难发现,当前所需要的玩具,首先应该考虑已经购买但是还没有使用的新玩具,因为额外花费为0;在这之后,再考虑便宜点的$c1$,而且是离当前越近越好,因为再往前的天数可能没有足够的脏玩具用来洗;最后再考虑贵的$c2$,这时候应该离当前越远越好,因为越往前靠的话,洗好的玩具就有更大的机会用来用$c1$洗,可以为以后减少花费。
|
|