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=0,p,ch,ans=0,S,T,k,dis[MAXN],an=0,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=0;ch=getchar();while (ch<'0'||ch>'9') ch=getchar();while (ch>='0'&&ch<='9') p=p*10+ch-48, ch=getchar();return p;
}
inline void spfa(){register int i;q.push(S);bo[S]=1;for (i=0;i<MAXN;i++) dis[i]=INF;mi[S]=INF;dis[S]=0;while(!q.empty()){int k=q.front();q.pop();bo[k]=0;if (k==T) continue;for (i=l[k];i;i=b[i].ne){if (b[i].z>0&&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]=1;q.push(b[i].y);}}}}
}
inline int add(int x,int y,int z,int f){num++;if (l[x]==0) 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,0,-f);
}
int main(){register int i,j;n=read();a=read();d=read();f=read();fa=read();fb=read();S=2*n+1;T=2*n+2;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);for (i=1;i<n;i++) in(i,i+1,INF,0);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]-1)^1)+1].z+=mi[T];}printf("%d\n",an);
}

转载于:https://www.cnblogs.com/Enceladus/p/5187502.html

bzoj:1221;vijos 1552 软件开发相关推荐

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

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

  2. [BZOJ 1221][HNOI2001]软件开发(费用流)

    Description 某软件公司正在规划一项n天的软件开发计划,根据开发计划第i天需要ni个软件开发人员,为了提高软件开发人员的效率,公司给软件人员提供了很多的服务,其中一项服务就是要为每个开发人员 ...

  3. 【软件工程】RUP与软件开发5大模型

    软件开发的5大模型 1.瀑布模型:按照人的思维一步一步的开发下去,如果需求分析得当,每个阶段顺利,结果还不错! 2.快速原型模型:后来人们发现,自己不可能一下子就把所有的需求搞清楚,总是在开发的过程中 ...

  4. 【快速上手mac必备】常用优质mac软件推荐(音视频、办公、软件开发、辅助工具、系统管理、云存储)

    本文章的主要内容是我作为一名大四学生.准程序员.up主这三种身份来给大家推荐一下 mac 上好用的软件以及工具.本人也是从去年9月份开始从windows阵营转移到了mac阵营,刚开始使用的时候,也曾主 ...

  5. 一则android软件开发工程师的招聘信息

    岗位职责: 从事Android平台的客户端软件开发 任职资格: 1.一年以上Android平台开发经验: 2.两年以上Java开发经验: 3.熟悉Android开发架构和API调用: 4.熟悉HTTP ...

  6. ubuntu14.04如何在线安装eclipse以及C/C++开发组件,搭建软件开发平台

    在ubuntu14.04操作系统中进行C/C++软件开发,需要安装eclipse以及CDT等各种组件,下载安装包一一安装,之后再进行各种配置可能比较麻烦,在这里推荐一种在线安装方式,安装配置较为方便. ...

  7. (广州)软件开发定制服务,工作流引擎 OA 库存管理系统

    本人专注于工作流的研究设计同时提供软件开发定制服务,工作流引擎 OA系统 库存管理系统 如果有机会合作共事请联系:15817167503(本人在广州) QQ:1311663711 加时请注明软件定制 ...

  8. 每个程序员必看:如何在40岁后继续做软件开发?

    导读: 这是一个 42 岁的开发者所写经验分享文章.并且列出一些他 18 年多身为软件开发者的经验谈.许多部分看完后都会希望自己当时就能够了解,所以很推荐不论是新手或是老手都要好好阅读这一篇文章. 故 ...

  9. 为什么Scrum模式适合软件开发?

    2019独角兽企业重金招聘Python工程师标准>>> 摘自基于Visual Studio 2010 进行敏捷/Scrum模式开发 软件行业至今已经有超过40年的历史,很多在软件工程 ...

最新文章

  1. jQuery简单实现遍历的方法
  2. html Selection
  3. python3moduleoftheweek中文_[翻译]Python Module of The Week: Counter
  4. Android广播机制:Broadcast
  5. Qt调用face++的http接口,实现人脸对比
  6. python django 数据库查询方法总结
  7. [JS进阶] JS 之Blob 对象类型
  8. 使用webbench进行压力测试
  9. MATLAB图像处理之图像去模糊处理
  10. cmd常用命令 cmd打开文件软件等
  11. PID参数整定——Z-N方法
  12. win10操作系统上编译assimp库
  13. DLL注入 + VEH 的方式处理异常
  14. 计算机开题报告万能模板,计算机开题报告ppt模板
  15. 大数据压缩处理:数据分卷压缩和分卷压缩解压
  16. 单服务器node.js和php性能测试
  17. stm32 DMA2D使用中断LVGL,提高LVGL帧率
  18. 【微信小程序】---- redux 在原生微信小程序的使用实例
  19. 掌握正确的运动姿势,很有必要!
  20. win10(专业版): L2TP连接尝试失败,因为安全层再初始化与远程计算机的协商时遇到一个处理错误。

热门文章

  1. php file函数在内容与底层逻辑分离的应用
  2. 创建react应用程序_通过创建食谱应用程序来学习在React中使用API
  3. javascript功能_功能性JavaScript简介
  4. 1032 Sharing
  5. 软件测试:黑盒白盒与动态静态之间有必然联系吗
  6. Java学习必不可少的网站,快收藏起来
  7. 学java为什么要报java培训班?
  8. java 获取init参数,Java如何读取servlet init参数?
  9. php开发面试题---攻击网站的常用手段有哪些,及如何预防(整理)
  10. Java异常处理12条军规