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
 
不会上下线网络流的我只能拆点……
拆点部分贴出来咯

for (i=1;i<=n;i++) v=read(),in(S,i,v,0),in(i+n,T,v,0),in(S,i+n,INF,f);
for (i=1;i<n-a;i++) in(i,i+n+a+1,INF,fa);
for (i=1;i<n-d;i++) in(i,i+n+d+1,INF,fb);//这里的d其实是原题的b
for (i=1;i<n;i++) in(i,i+1,INF,0);

#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define MAXN 2100
#define MAXM 12000
using namespace std; struct na{
int y,z,f,ne;
};
int n,m,l[MAXN],r[MAXN],num=,p,ch,ans=,S,T,k,dis[MAXN],an=,mi[MAXN],ro[MAXN],qi[MAXN],a,d,fa,fb,f,v;
na b[MAXM];
bool bo[MAXN];
const int INF=1e9;
queue <int> q;
inline int min(int x,int y){return x>y?y:x;}
inline int read(){
p=;ch=getchar();
while (ch<''||ch>'') ch=getchar();
while (ch>=''&&ch<='') p=p*+ch-, ch=getchar();
return p;
}
inline void spfa(){
register int i;
q.push(S);
bo[S]=;
for (i=;i<MAXN;i++) dis[i]=INF;
mi[S]=INF;dis[S]=;
while(!q.empty()){
int k=q.front();q.pop();bo[k]=;
if (k==T) continue;
for (i=l[k];i;i=b[i].ne){
if (b[i].z>&&dis[b[i].y]>b[i].f+dis[k]){
dis[b[i].y]=b[i].f+dis[k];
mi[b[i].y]=min(mi[k],b[i].z);
ro[b[i].y]=i;
qi[b[i].y]=k;
if (!bo[b[i].y]){
bo[b[i].y]=;
q.push(b[i].y);
}
}
}
}
}
inline int add(int x,int y,int z,int f){
num++;
if (l[x]==) l[x]=num;else b[r[x]].ne=num;
b[num].y=y;b[num].z=z;b[num].f=f;r[x]=num;
}
inline void in(int x,int y,int z,int f){
add(x,y,z,f),add(y,x,,-f);
}
int main(){
register int i,j;
n=read();a=read();d=read();f=read();fa=read();fb=read();
S=*n+;T=*n+;
for (i=;i<=n;i++) v=read(),in(S,i,v,),in(i+n,T,v,),in(S,i+n,INF,f);
for (i=;i<n-a;i++) in(i,i+n+a+,INF,fa);
for (i=;i<n-d;i++) in(i,i+n+d+,INF,fb);
for (i=;i<n;i++) in(i,i+,INF,);
for(;;){
spfa();
if (dis[T]==INF) break;
an+=mi[T]*dis[T];
for (i=T;i;i=qi[i]) b[ro[i]].z-=mi[T],b[((ro[i]-)^)+].z+=mi[T];
}
printf("%d\n",an);
}

bzoj:1221;vijos 1552 软件开发的更多相关文章

  1. 【BZOJ 1221】 [HNOI2001] 软件开发

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] /* 设一个超级源点S和超级汇点T S和2*i-1各连一条容量为ni的边. 花费为0 表示每天都会产生ni条要洗的毛巾 S和2*i各 ...

  2. 【BZOJ】【1221】【HNOI2001】软件开发

    网络流/费用流 说是这题跟餐巾计划一模一样……但我没做过啊……so sad 二分图建模是很好想的,但是要控制流量跟用了的毛巾一样多……oh my god 事实上对于每一天我们无论如何都是要消耗n[i] ...

  3. BZOJ 1221: [HNOI2001] 软件开发

    1221: [HNOI2001] 软件开发 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1428  Solved: 791[Submit][Stat ...

  4. 【BZOJ】1221: [HNOI2001] 软件开发(最小费用最大流)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1221 先吐槽一下,数组依旧开小了RE:在spfa中用了memset和<queue>的版本 ...

  5. BZOJ 3280: 小R的烦恼 & BZOJ 1221: [HNOI2001] 软件开发

    3280: 小R的烦恼 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 399  Solved: 200[Submit][Status][Discuss ...

  6. BZOJ 1221: [HNOI2001] 软件开发(最小费用最大流)

    不知道为什么这么慢.... 费用流,拆点.... --------------------------------------------------------------------------- ...

  7. 【BZOJ 1221】 1221: [HNOI2001] 软件开发 (最小费用流)

    1221: [HNOI2001] 软件开发 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1581  Solved: 891 Description ...

  8. [BZOJ 1221] [HNOI2001] 软件开发 【费用流 || 三分】

    题目链接:BZOJ - 1221 题目分析 算法一:最小费用最大流 首先这是一道经典的网络流问题.每天建立两个节点,一个 i 表示使用毛巾,一个 i' 表示这天用过的毛巾. 然后 i 向 T 连 Ai ...

  9. bzoj 1221 [HNOI2001] 软件开发 费用流

    [HNOI2001] 软件开发 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1938  Solved: 1118[Submit][Status][D ...

随机推荐

  1. Pipeline in scala——给scala添加管道操作

     linux系统中管道这一功能相信大家肯定使用过,比如现在想找到用户目录下文件名包含db的所有文件,ls ~的结果,作为grep db的参数: ➜ ~ ls ~ | grep db kv.mv.db ...

  2. csdn博客被删除联系客服恢复

    前几天写了篇"如何使用shadowsocksFQ",居然被删除,我很郁闷,客服给我的回答是"影响了客户体验,网安查的严,不能带有FQ的信息出现" 我一直很郁闷, ...

  3. 扩展Microsoft Graph数据结构(开放扩展)

    作者:陈希章 发表于 2018年1月2日 前言 Microsoft Graph是一张拥有巨大价值的网络,它定义了包括Office 365在内的资源的实体及其关系,它的价值体现在,随着用户积累的数据越来 ...

  4. bat修改密码

    @echo off %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe&q ...

  5. python匿名函数

    文章导读: 以前自己一直没搞明白Python中的匿名函数,现在拿这个问题基本上搞明白了,拿自己的理解整成一篇文章,附带大量例子,让其更加好理解. 在编程语言中,函数的应用: 1. 代码块重复,这时候必 ...

  6. [编织消息框架][netty源码分析]1分析切入点

    在分析源码之前有几个疑问 1.BOSS线程如何转交给handle(业务)线程2.职业链在那个阶段执行3.socket accept 后转给上层对象是谁4.netty控流算法 另外要了解netty的对象 ...

  7. Q:javax.comm 2.0 windows下Eclipse的配置

    @转自http://blog.csdn.net/zhuanghe_xing/article/details/7523744处 要在Windows下,对计算机的串口或并口等进行编程,可以选择使用Java ...

  8. 更好的小票打印体验,huanent.printer2.0发布

    huanent.printer2.0是一个专注消费小票打印的类库.拥有许多先进的特性例如居中打印.自动换行等特性,可以通过简洁的代码来打印出复杂的消费小票.huanent.printer通过MIT方式 ...

  9. 鸟哥的linux私房菜学习-(五)Linux系统的在线求助man page与info page

    1.man page man是manual(操作说明)的简写啦!只要下达:『man date』 马上就会有清楚的说明出现在你面前喔!如下所示: 进入man命令的功能后,你可以按下『空格键』往下翻页,可 ...

  10. selenium WebDriver 八种定位方式源码

    /* * 多种元素定位方式 */ package com.sfwork; import java.util.List; import org.openqa.selenium.By; import or ...