Description

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

Solution

据说是非常经典的建图方式?网络流24题——餐巾计划问题

把每一天拆为脏的餐巾与需要的餐巾…

BY BYVOID:
把每天分为二分图两个集合中的顶点Xi,Yi,建立附加源S汇T。
1、从S向每个Xi连一条容量为ri,费用为0的有向边。
2、从每个Yi向T连一条容量为ri,费用为0的有向边。
3、从S向每个Yi连一条容量为无穷大,费用为p的有向边。
4、从每个Xi向Xi+1(i+1<=N)连一条容量为无穷大,费用为0的有向边。
5、从每个Xi向Yi+m(i+m<=N)连一条容量为无穷大,费用为f的有向边。
6、从每个Xi向Yi+n(i+n<=N)连一条容量为无穷大,费用为s的有向边。
求网络最小费用最大流,费用流值就是要求的最小总花费。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<queue>
#define INF 0x3f3f3f3f
using namespace std;
int n,a,b,f,fa,fb,s,t,head[2005],c[2005],dis[2005],pre[2005],cnt=0;
bool inq[2005];
struct Node
{int next,from,to,cap,w;
}Edges[50005];
int read()
{int x=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x*f;
}
void addedge(int u,int v,int c,int w)
{Edges[cnt].next=head[u];head[u]=cnt;Edges[cnt].from=u;Edges[cnt].to=v;Edges[cnt].cap=c;Edges[cnt++].w=w;
}
void insert(int u,int v,int c,int w)
{addedge(u,v,c,w);addedge(v,u,0,-w);
}
queue<int>q;
int MCMF()
{int cost=0,flow=0;while(1){memset(c,0,sizeof(c));memset(dis,0x3f,sizeof(dis));q.push(s);inq[s]=1,dis[s]=0,c[s]=INF,pre[s]=-1;while(!q.empty()){int u=q.front();q.pop(),inq[u]=0;for(int i=head[u];~i;i=Edges[i].next){int v=Edges[i].to;if(dis[v]>dis[u]+Edges[i].w&&Edges[i].cap>0){dis[v]=dis[u]+Edges[i].w;c[v]=min(c[u],Edges[i].cap);pre[v]=i;if(!inq[v])inq[v]=1,q.push(v);}}}if(!c[t])break;cost+=c[t]*dis[t];flow+=c[t];int p=t;while(pre[p]!=-1){Edges[pre[p]].cap-=c[t];Edges[pre[p]^1].cap+=c[t];p=Edges[pre[p]].from;}}return cost;
}
int main()
{memset(head,-1,sizeof(head));n=read(),a=read(),b=read(),f=read(),fa=read(),fb=read();s=0,t=2*n+1;for(int i=1;i<=n;i++){int x=read();insert(s,i,x,0);insert(i+n,t,x,0);insert(s,i+n,INF,f);if(i+a+1<=n)insert(i,i+a+1+n,INF,fa);if(i+b+1<=n)insert(i,i+b+1+n,INF,fb);if(i+1<=n)insert(i,i+1,INF,0);}printf("%d\n",MCMF());return 0;
} 

转载于:https://www.cnblogs.com/Zars19/p/6869515.html

[BZOJ 1221][HNOI2001]软件开发(费用流)相关推荐

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

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

  2. bzoj 1221: [HNOI2001] 软件开发

    最小费用最大流 /**************************************************************Problem: 1221User: lxy8584099 ...

  3. 开工大吉!祝低代码软件开发公司流辰信息财源广进、步步高升!

    正月初七,正值玉兔送福之际,低代码软件开发公司迎来了开工大吉的喜庆日子.在浓浓的新年氛围中,流辰信息迎来了正式开工的日子,流辰人在一片喜气洋洋的新年贺声中来开了兔年出征的辉煌序幕. 值此开工大吉之日, ...

  4. BZOJ 5326 [JSOI2017]博弈 (模拟费用流、线段树)

    题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=5326 题解 终于成为第8个A掉这题的人--orz tzw神仙早我6小时 本以为这东西常数 ...

  5. 软件开发平台流辰信息如何为客户分忧解难?

    在数字化信息越来越丰富的今天,作为软件开发平台服务商,流辰信息如何为客户提质增产.降本增效?又凭什么为客户分忧解难,创造更大的价值? 一.以产品研发及创新为动力,夯实发展根基 俗语云:真金不怕火炼.是 ...

  6. BZOJ 4946: [Noi2017]蔬菜 模拟费用流

    title BZOJ 4946 LUOGU 3826 简化题意: 定义了一种蔬菜为:\(ai,si,ci,xi\),意思是蔬菜的价格为 \(a_i\),第一份卖出时价格为 \(a_i+s_i\),一共 ...

  7. [BZOJ 2424][HAOI2010]订货(费用流)

    Description 某公司估计市场在第i个月对某产品的需求量为Ui,已知在第i月该产品的订货单价为di,上个月月底未销完的单位产品要付存贮费用m,假定第一月月初的库存量为零,第n月月底的库存量也为 ...

  8. BZOJ 3876 AHOI2014 支线剧情 费用流

    题目大意:给定一张拓扑图,每条边有边权,每次只能从第一个点出发沿着拓扑图走一条路径,求遍历所有边所需要的最小边权和 有下界有源汇的最小费用流 裸的... 建图如下: 对于每一条边权为z的边x-> ...

  9. BZOJ.3265.志愿者招募加强版(费用流SPFA)

    题目链接 见上题. 每类志愿者可能是若干段,不满足那个...全幺模矩阵(全单位模矩阵)的条件,所以线性规划可能存在非整数解. 于是就可以用费用流水过去顺便拿个rank2 233. //20704kb ...

最新文章

  1. Nature Methods:微生物来源分析包SourceTracker——结果解读和使用教程
  2. Cassandra 2016/00
  3. 项目十大管理及5大过程组概览
  4. 真假应用傻傻分不清,HideIcon病毒玩起“隐身计”
  5. 【windows8开发】C++开发WinRT组件和JS调用
  6. idea启动java Maven项目,出现“ java: 程序包xxxx不存在“
  7. QT的QStackedLayout
  8. 优秀程序员的两大要素:懒 + 笨
  9. shell笔记[转]
  10. com.android.pngp.tln,Android资源之图像资源(图像级别资源)
  11. iOS开发 -------- Block技术中的weak - strong
  12. 邮箱服务器端口以及各大型邮箱smtp服务器及端口收集
  13. 固定资产管理模式的演变历程
  14. 计算机常见的硬件故障及维护,计算机硬件故障原理及日常维护
  15. IDW空间插值法matlab,基于IDW对PM2.5进行空间插值及可视化
  16. IllustratorCS6-桌面排版与插画绘制-01-使用散点画笔绘制璀璨星云
  17. 不属于计算机完成科学特点的是,2019年网络教育统考《计算机应用基础》试卷版练习题2...
  18. 安卓逆向——刷机Pixel2 ROOT
  19. 视频库:人工智能开发_人工智能工程师_AI人工智能
  20. PowerQuery 相对路径解决方案

热门文章

  1. 注意,免费的 CentOS 落幕,将于本月底终止维护!
  2. Hbase 和 MySQL 的区别是什么?一文深度对比!
  3. 不可不知的软件架构模式
  4. 玩转Java8中的 Stream 之从零认识 Stream
  5. 4 种数据库缓存最终一致性的优缺点对比?最终选择方案四!
  6. 写一手好 SQL 很有必要
  7. 9 大主题卷积神经网络(CNN)的 PyTorch 实现
  8. 2020腾讯广告算法大赛分享(冠军)
  9. 数据统计脚本(汇总)
  10. 5分钟带你读「大清」微积分!160多年前清朝数学家撰写文言文版高等数学