bzoj:1221;vijos 1552 软件开发
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
8 2 1 6
Sample Output

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 软件开发的更多相关文章
- 【BZOJ 1221】 [HNOI2001] 软件开发
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] /* 设一个超级源点S和超级汇点T S和2*i-1各连一条容量为ni的边. 花费为0 表示每天都会产生ni条要洗的毛巾 S和2*i各 ...
- 【BZOJ】【1221】【HNOI2001】软件开发
网络流/费用流 说是这题跟餐巾计划一模一样……但我没做过啊……so sad 二分图建模是很好想的,但是要控制流量跟用了的毛巾一样多……oh my god 事实上对于每一天我们无论如何都是要消耗n[i] ...
- BZOJ 1221: [HNOI2001] 软件开发
1221: [HNOI2001] 软件开发 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1428 Solved: 791[Submit][Stat ...
- 【BZOJ】1221: [HNOI2001] 软件开发(最小费用最大流)
http://www.lydsy.com/JudgeOnline/problem.php?id=1221 先吐槽一下,数组依旧开小了RE:在spfa中用了memset和<queue>的版本 ...
- BZOJ 3280: 小R的烦恼 & BZOJ 1221: [HNOI2001] 软件开发
3280: 小R的烦恼 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 399 Solved: 200[Submit][Status][Discuss ...
- BZOJ 1221: [HNOI2001] 软件开发(最小费用最大流)
不知道为什么这么慢.... 费用流,拆点.... --------------------------------------------------------------------------- ...
- 【BZOJ 1221】 1221: [HNOI2001] 软件开发 (最小费用流)
1221: [HNOI2001] 软件开发 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1581 Solved: 891 Description ...
- [BZOJ 1221] [HNOI2001] 软件开发 【费用流 || 三分】
题目链接:BZOJ - 1221 题目分析 算法一:最小费用最大流 首先这是一道经典的网络流问题.每天建立两个节点,一个 i 表示使用毛巾,一个 i' 表示这天用过的毛巾. 然后 i 向 T 连 Ai ...
- bzoj 1221 [HNOI2001] 软件开发 费用流
[HNOI2001] 软件开发 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1938 Solved: 1118[Submit][Status][D ...
随机推荐
- 【CSS3】盒模型
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 【JMeter】source("文件路程")和${变量}同时出现会报错
source("D:\\apache-jmeter-3.0\\testcase\\java\\Test.java"); //${journeyLen} 以上两句在JMeter脚本里 ...
- Swift3.0 创建工程常用的类、三方、以及扩展 1.5
搭建项目常用的方法属性,欢迎追加 三方: source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' use_framew ...
- css:background-position > 精灵技术
background-position : length || length background-position : position || position 取值: length : 百分数 ...
- Nodejs进阶:crypto模块中你需要掌握的安全基础
本文摘录自<Nodejs学习笔记>,更多章节及更新,请访问 github主页地址. 一. 文章概述 互联网时代,网络上的数据量每天都在以惊人的速度增长.同时,各类网络安全问题层出不穷.在信 ...
- eslint常见规则总结
google: eslint+rules es6: impot When you import the module's default, don't use brace {} 意思是,当你使用默认的 ...
- 根据NPOI 读取一个excel 文件的多个Sheet
大家都知道NPOI组件可以再你本地没有安装office的情况下来 读取,创建excel文件.但是大家一般都是只默认读取一个excel文件的第一个sheet.那么如果要读取一个excel 的所有shee ...
- Ajax 原生和jQuery的ajax用法
https://www.cnblogs.com/jach/p/5709175.html form数据的序列化: $('#submit').click(function(){ $('#form').se ...
- C# 真正能发邮件的源码
在网上找了很多例子都试邮件发送都失败,今天无意有试了一下居然行了 public static void ErrorMessageMail(string _subject, string _body) ...
- Python day 6(3) Python 函数式编程1
一:函数式编程概念 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的 ...