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

一共有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. 基于SqlSugar的开发框架循序渐进介绍(13)-- 基于ElementPlus的上传组件进行封装,便于项目使用

    在我们实际项目开发过程中,往往需要根据实际情况,对组件进行封装,以更简便的在界面代码中使用,在实际的前端应用中,适当的组件封装,可以减少很多重复的界面代码,并且能够非常简便的使用,本篇随笔介绍基于El ...

  2. break和continue语句的使用

    break break关键字的用法有常见的两种: 1.可以用在switch语句当中,一旦执行整个switch语句like结束. 2.还可以用在循环语句当中,一旦执行,整个循环语句立刻结束,打断循环 关 ...

  3. SQL语句实战学习

    参考:https://zhuanlan.zhihu.com/p/38354000再次感谢作者的整理!! 1.数据已提前准备好了,已知有如下4张表:学生表:student 成绩表:score(学号,课程 ...

  4. 关于Tornado5.1:到底是真实的异步和还是虚假的异步

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_107 我们知道Tornado 优秀的大并发处理能力得益于它的 web server 从底层开始就自己实现了一整套基于 epoll ...

  5. 集成 Spring Doc 接口文档和 knife4j-SpringBoot 2.7.2 实战基础

    优雅哥 SpringBoot 2.7.2 实战基础 - 04 -集成 Spring Doc 接口文档和 knife4j 前面已经集成 MyBatis Plus.Druid 数据源,开发了 5 个接口. ...

  6. Luogu3177 [HAOI2015]树上染色 (树形DP)

    考场上打出来个\(2^n n^2 \log (n)\),还文件错误RE了... 其实这不就是个变了一点点的树形背包,状态是节点\(u\)子树的\(贡献\). //#include <iostre ...

  7. Git 07 IDEA集成Git

    参考源 https://www.bilibili.com/video/BV1FE411P7B3?spm_id_from=333.999.0.0 版本 本文章基于 Git 2.35.1.2 IDEA 是 ...

  8. 用GitHub Actions自动部署Hexo

    什么是 GitHub Actions ? GitHub Actions 是一个 CI/CD(持续集成/持续部署)工具,GitHub 于 2018 年 10 月推出,正式版于 2019 年 11 月正式 ...

  9. ubuntu 连不上网怎么办?

    [简洁版本] ctrl+alt+delete -> 任务管理器 ->"服务"选项卡 -> 运行"VMnet""VMware" ...

  10. 在 C# CLR 中学习 C++ 之了解 extern

    一:背景 在 CLR 源码中有很多的 extern 和 extern "C" 这样的关键词,比如下面这些代码: extern size_t gc_global_mechanisms ...