题目描述
一个餐厅在相继的 NNN 天里,每天需用的餐巾数不尽相同。假设第 iii 天需要 rir_iri块餐巾( i=1,2,...,N)。餐厅可以购买新的餐巾,每块餐巾的费用为 ppp 分;或者把旧餐巾送到快洗部,洗一块需 m 天,其费用为 f 分;或者送到慢洗部,洗一块需 nnn 天(n>mn>mn>m),其费用为 sss 分(s<fs<fs<f)。
每天结束时,餐厅必须决定将多少块脏的餐巾送到快洗部,多少块餐巾送到慢洗部,以及多少块保存起来延期送洗。但是每天洗好的餐巾和购买的新餐巾数之和,要满足当天的需求量。
试设计一个算法为餐厅合理地安排好 NNN 天中餐巾使用计划,使总的花费最小。编程找出一个最佳餐巾使用计划。
输入输出格式
输入格式: 由标准输入提供输入数据。文件第 1 行有 1 个正整数 NNN,代表要安排餐巾使用计划的天数。
接下来的 NNN 行是餐厅在相继的 NNN 天里,每天需用的餐巾数。
最后一行包含5个正整数p,m,f,n,sp,m,f,n,sp,m,f,n,s。ppp 是每块新餐巾的费用; mmm 是快洗部洗一块餐巾需用天数; fff 是快洗部洗一块餐巾需要的费用; nnn 是慢洗部洗一块餐巾需用天数; sss 是慢洗部洗一块餐巾需要的费用。
输出格式: 将餐厅在相继的 N 天里使用餐巾的最小总花费输出
输入输出样例
输入样例#1: 31 7 5 11 2 2 3 1
说明
N<=2000
ri<=10000000
p,f,s<=10000
时限4s
重要是建图;
将每一天分为早上和晚上;
s向每一天晚上连容量为ri,费用为0的边,每一天早上向t连容量为ri,费用为0的边;
第 i 天晚上可以向第 i+1 天晚上连边,对于清洗来说,第 i 天晚上可以向 第 i+T1/T2 天早上连边;
最后每一天早上都可以花费 p 来购买毛巾;
#include #include #include #include #include #include #include #include