Loi_Vampire's Blog

自己选择的路,就算跪着也要走完

02/24
07:53
图论 网络流

BZOJ 1221 [HNOI2001] 软件开发 网络流-费用流

Description

某软件公司正在规划一项n天的软件开发计划,根据开发计划第i天需要ni个软件开发人员,为了提高软件开发人员的效率,公司给软件人员提供了很多的服务,其中一项服务就是要为每个开发人员每天提供一块消毒毛巾,这种消毒毛巾使用一天后必须再做消毒处理后才能使用。消毒方式有两种,A种方式的消毒需要a天时间,B种方式的消毒需要b天(b>a),A种消毒方式的费用为每块毛巾fA, B种消毒方式的费用为每块毛巾fB,而买一块新毛巾的费用为f(新毛巾是已消毒的,当天可以使用);而且f>fA>fB。公司经理正在规划在这n天中,每天买多少块新毛巾、每天送多少块毛巾进行A种消毒和每天送多少块毛巾进行B种消毒。当然,公司经理希望费用最低。你的任务就是:为该软件公司计划每天买多少块毛巾、每天多少块毛巾进行A种消毒和多少毛巾进行B种消毒,使公司在这项n天的软件开发中,提供毛巾服务的总费用最低。

Input

第1行为n,a,b,f,fA,fB. 第2行为n1,n2,……,nn. (注:1≤f,fA,fB≤60,1≤n≤1000)

Output

最少费用

Sample Input

4 1 2 3 2 1

8 2 1 6

Sample Output

38

HINT

 

Source

 

Solution

所有的毛巾可以分为两类:第i天要用的 和 第i天用完的。

第i天用完的毛巾可以以后处理,即向i+1(1≤i+1≤n)天连一条流量为INF,花费为0的边;也可以采用A种方式清洗,即向i+a+1+n(1≤i+1+a≤n)天连一条流量为INF,花费为fa的边;同理采用B种方式清洗也是这么处理。

第i天要用的毛巾也可以直接购买,由超级源s直接连一条流量为INF,花费为f的边。

超级源向每个点i连一条流量为ni,花费为0的边,每个点i+n向t连一条流量为ni,花费为0的边,限制流量。