标准的费用流问题,关键在于巧妙地建模

一共有n个月份,源点设为0,汇点设为n+1

1.源点向所有月份连边,容量为正无穷,费用为该月进货的费用

2.每个月向下一个月连边,容量为仓库容量,费用为存货费用

3.每个月向汇点连边,容量为该月卖货的数量,费用为0(卖货不会产生费用)

用最小费用最大流求解即可

————————————————
版权声明:本文为CSDN博主「ynhnxn」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/C_sat/article/details/123443008

 1 #include<bits/stdc++.h>
2 using namespace std;
3 int INF=20000000,tot=1,n,ans=0;
4 int nex[1000],adj[1000],to[1000],cap[1000],cost[1000];
5 int d[60],que[2000000];
6 bool vis[1000];
7
8 void add(int u,int v,int w,int c){
9 nex[++tot]=adj[u];
10 adj[u]=tot;
11 to[tot]=v;
12 cap[tot]=w;
13 cost[tot]=c;
14 }
15
16 int SPFA(){//标准SPFA
17 int q1=0,q2=1;
18 que[1]=0;
19 for(int i=1;i<=n+1;i++) d[i]=INF,vis[i]=0;
20 while(q1<q2){
21 int x=que[++q1];
22 vis[x]=0;
23 for(int k=adj[x];k;k=nex[k]){
24 int y=to[k];
25 if(d[x]+cost[k]<d[y]&&cap[k]){
26 d[y]=d[x]+cost[k];
27 if(!vis[y]){
28 vis[y]=1;que[++q2]=y;
29 }
30 }
31 }
32 }
33 if(d[n+1]==INF) return 0;
34 for(int i=0;i<=n+1;i++){
35 if(d[i]!=INF) vis[i]=0;
36 }
37 return 1;
38 }
39
40 int dinic(int u,int fw){//标准dinic
41 if(u==n+1){
42 ans+=fw*d[n+1];
43 return fw;
44 }
45 vis[u]=1;
46 int rest=fw;
47 for(int i=adj[u];i&&rest;i=nex[i]){
48 int v=to[i];
49 if(!vis[v]&&d[v]==d[u]+cost[i]&&cap[i]>0){
50 int k=dinic(v,min(rest,cap[i]));
51 if(k){
52 rest-=k;
53 cap[i]-=k;
54 cap[i^1]+=k;
55 }
56 }
57 }
58 return fw-rest;
59 }
60
61 int main(){//源点为0,汇点为n+1
62 int x,m,s;
63 scanf("%d%d%d",&n,&m,&s);//月份数,存贮费,仓库容量
64 for(int i=1;i<=n;i++){
65 scanf("%d",&x);//需求量
66 add(i,n+1,x,0);
67 add(n+1,i,0,0);//每个月向汇点连边,容量为x,费用为0
68 if(i!=n) add(i,i+1,s,m),add(i+1,i,0,-m);//向下一个月连边,容量就是仓库容量s,费用是m
69 }
70 for(int i=1;i<=n;i++){
71 scanf("%d",&x);//订货单价
72 add(0,i,INF,x);
73 add(i,0,0,-x);//源点向每个月连边,容量为正无穷,费用为订货价格
74 }
75 while(SPFA()) dinic(0,INF);//最小费用最大流
76 cout<<ans;
77 }

洛谷P2517 HAOI2010 订货 (费用流)的更多相关文章

  1. BZOJ 2424: [HAOI2010]订货 费用流

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

  2. 【bzoj2424】[HAOI2010]订货 费用流

    原文地址:http://www.cnblogs.com/GXZlegend/p/6825296.html 题目描述 某公司估计市场在第i个月对某产品的需求量为Ui,已知在第i月该产品的订货单价为di, ...

  3. 洛谷.4015.运输问题(SPFA费用流)

    题目链接 嗯..水题 洛谷这网络流二十四题的难度评价真神奇.. #include <queue> #include <cstdio> #include <cctype&g ...

  4. BZOJ2424 [HAOI2010]订货 - 费用流

    题解 (非常裸的费用流 题意有一点表明不清: 该月卖出的商品可以不用算进仓库里面. 然后套上费用流模板 代码 #include<cstring> #include<queue> ...

  5. 洛谷P4015 运输问题(费用流)

    传送门 源点向仓库连费用$0$,流量为储量的边,商店向汇点连费用$0$,流量为需求的边,然后仓库向商店连流量$inf$,费用对应的边,跑个费用流即可 //minamoto #include<io ...

  6. 洛谷P4014 分配问题(费用流)

    传送门 可以把原图看做一个二分图,人在左边,任务在右边,求一个带权的最大和最小完美匹配 然而我并不会二分图做法,所以只好直接用费用流套进去,求一个最小费用最大流和最大费用最大流即可 //minamot ...

  7. 洛谷 - P4452 - 航班安排 - 费用流

    https://www.luogu.org/problemnew/show/P4452 又一道看题解的费用流. 注意时间也影响节点,像题解那样建边就少很多了. #include<bits/std ...

  8. P2517 [HAOI2010]订货(dp)

    P2517 [HAOI2010]订货 设$f[i][j]$表示第$i$个月,库存为$j$的最小代价 枚举上个月的库存$k$,那么$f[i][j]=f[i-1][k]+(j+U[i]-k)*D[i]+j ...

  9. 洛谷.3381.[模板]最小费用最大流(zkw)

    题目链接 Update:我好像刚知道多路增广就是zkw费用流.. //1314ms 2.66MB 本题优化明显 #include <queue> #include <cstdio&g ...

随机推荐

  1. Bika LIMS 开源LIMS集—— SENAITE的使用(检测流程)

    客户管理 登记客户信息,包括地址.合同报告邮寄地址.账单邮寄地址.付款银行账号等. 产品批次管理 例如某乳品公司生产处一批产品,该批产品送往实验室检测,实验室登记该批产品批号,如对该批产品做多次检测, ...

  2. Python3利用Twilio(国际)以及腾讯云服务(国内)免费发送手机短信

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_152 短信服务验证服务已经不是什么新鲜事了,但是免费的手机短信服务却不多见,本次利用Python3.0基于Twilio和腾讯云服务 ...

  3. 当我们进行性能优化,我们在优化什么(LightHouse优化实操)

    好的互联网产品不仅仅在功能上要高人一筹,在性能层面也需要出类拔萃,否则金玉其外败絮其中,页面是美轮美奂了,结果首屏半天加载不出来,难免让用户乘兴而来,败兴而归. 幸运的是,前端的性能优化有诸多有迹可循 ...

  4. 后端统一处理返回前端日期LocalDateTime格式化去T,Long返回前端损失精度问题

    一.前言 我们在实际开发中肯定会遇到后端的时间传到前端是这个样子的:2022-08-02T15:43:50 这个时候前后端就开始踢皮球了,!! 后端说:前端来做就可! 前端说:后端来做就可! 作为一名 ...

  5. Auto.js 调用系统短信、电话

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! Auto.js 调用系统短信.电话 操作 ...

  6. Redis 12 持久化

    参考源 https://www.bilibili.com/video/BV1S54y1R7SB?spm_id_from=333.999.0.0 版本 本文章基于 Redis 6.2.6 概述 Redi ...

  7. 深入解析Flutter下一代渲染引擎Impeller

    作者 魏国梁:字节 Flutter Infra 工程师, Flutter Member,长期专注 Flutter 引擎技术 袁    欣:字节 Flutter Infra 工程师, 长期关注渲染技术发 ...

  8. Queue-jumpers - 平衡树

    题面 Ponyo and Garfield are waiting outside the box-office for their favorite movie. Because queuing i ...

  9. sftp服务器的搭建与连接

    在个人租用的vps上搭建sftp服务器并通过本机连接上去 本实验所需:Xshell(xshell中包含xftp).一台vps(windows系统) sftp是一种协议,即SSH File Transf ...

  10. python随机值生成的常用方法

    一.随机整数1.包含上下限:[a, b] import random #1.随机整数:包含上下限:[a, b] for i in range(10): print(random.randint(0,5 ...