Description

某公司估计市场在第i个月对某产品的需求量为Ui,已知在第i月该产品的订货单价为di,上个月月底未销完的单位产品要付存贮费用m,假定第一月月初的库存量为零,第n月月底的库存量也为零,问如何安排这n个月订购计划,才能使成本最低?每月月初订购,订购后产品立即到货,进库并供应市场,于当月被售掉则不必付存贮费。假设仓库容量为S。

Input

第1行:n, m, S (0<=n<=50, 0<=m<=10, 0<=S<=10000)
第2行:U1 , U2 , ... , Ui , ... , Un (0<=Ui<=10000)
第3行:d1 , d2 , ..., di , ... , dn (0<=di<=100)

Output

只有1行,一个整数,代表最低成本

Sample Input

3 1 1000
2 4 8
1 2 4

Sample Output

34
 
一道比餐巾计划垃圾到不知道到哪里去的题
(好吧感觉和餐巾计划是一个题)
S---每一天 ,INF,当日单价
每一天---T,当日需求,0
每一天---下一天,S,m
啊做水题真爽
 
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cstring>
  5. #include<queue>
  6. #define id(x,y) (x-1)*m+y
  7. #define N (10000+10)
  8. #define M (1000000+10)
  9. using namespace std;
  10. bool used[N];
  11. int n,m,S,s,e,u[],d[];
  12. int num_edge,head[N];
  13. int dis[N],INF,pre[N];
  14. queue<int>q;
  15. struct node
  16. {
  17. int to,next,Flow,Cost;
  18. } edge[M*];
  19.  
  20. void add(int u,int v,int l,int c)
  21. {
  22. edge[++num_edge].to=v;
  23. edge[num_edge].next=head[u];
  24. edge[num_edge].Flow=l;
  25. edge[num_edge].Cost=c;
  26. head[u]=num_edge;
  27. }
  28.  
  29. bool Spfa(int s,int e)
  30. {
  31. memset(dis,0x7f,sizeof(dis));
  32. memset(pre,-,sizeof(pre));
  33. dis[s]=;
  34. used[s]=true;
  35. q.push(s);
  36. while (!q.empty())
  37. {
  38. int x=q.front();
  39. q.pop();
  40. for (int i=head[x]; i!=; i=edge[i].next)
  41. if (dis[x]+edge[i].Cost<dis[edge[i].to] && edge[i].Flow>)
  42. {
  43. dis[edge[i].to]=dis[x]+edge[i].Cost;
  44. pre[edge[i].to]=i;
  45. if (!used[edge[i].to])
  46. {
  47. used[edge[i].to]=true;
  48. q.push(edge[i].to);
  49. }
  50. }
  51. used[x]=false;
  52. }
  53. return dis[e]!=INF;
  54. }
  55.  
  56. int MCMF(int s,int e)
  57. {
  58. int Fee=;
  59. while (Spfa(s,e))
  60. {
  61. int d=INF;
  62. for (int i=e; i!=s; i=edge[((pre[i]-)^)+].to)
  63. d=min(d,edge[pre[i]].Flow);
  64. for (int i=e; i!=s; i=edge[((pre[i]-)^)+].to)
  65. {
  66. edge[pre[i]].Flow-=d;
  67. edge[((pre[i]-)^)+].Flow+=d;
  68. }
  69. Fee+=d*dis[e];
  70. }
  71. return Fee;
  72. }
  73.  
  74. int main()
  75. {
  76. memset(&INF,0x7f,sizeof(INF));
  77. s=,e=;
  78. scanf("%d%d%d",&n,&m,&S);
  79. for (int i=; i<=n; ++i)
  80. scanf("%d",&u[i]);
  81. for (int i=; i<=n; ++i)
  82. scanf("%d",&d[i]);
  83. for (int i=; i<=n; ++i)
  84. {
  85. add(s,i,INF,d[i]);
  86. add(i,s,,-d[i]);
  87. add(i,e,u[i],);
  88. add(e,i,,);
  89. if (i==n) break;
  90. add(i,i+,S,m);
  91. add(i+,i,,-m);
  92. }
  93. printf("%d",MCMF(s,e));
  94. }

2424. [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. BZOJ2424 [HAOI2010]订货 - 费用流

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

  4. BZOJ 2424: [HAOI2010]订货(最小费用最大流)

    最小费用最大流..乱搞即可 ------------------------------------------------------------------------------ #includ ...

  5. BZOJ 2424: [HAOI2010]订货

    2424: [HAOI2010]订货 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 915  Solved: 639[Submit][Status][ ...

  6. 2424: [HAOI2010]订货

    2424: [HAOI2010]订货 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 922  Solved: 642[Submit][Status][ ...

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

    裸的费用流了= =从源点向每个点连费用为di,从汇点向每个点连流量为ui,每个点向下一个点连费用为m,流量为s的边就行了 CODE: #include<cstdio>#include< ...

  8. bzoj 2424: [HAOI2010]订货 (费用流)

    直接费用流,天数就是点数 type arr=record toward,next,cap,cost:longint; end; const maxm=; maxn=; mm=<<; var ...

  9. BZOJ 2424 DP OR 费用流

    思路: 1.DP f[i][j]表示第i个月的月底 还剩j的容量 转移还是相对比较好想的-- f[i][j+1]=min(f[i][j+1],f[i][j]+d[i]); if(j>=u[i+1 ...

随机推荐

  1. PHP学习1——快速入门

    主要内容: 搭建PHP开发环境 第一个helloworld程序 PHP(Hypertext Preprocessor)PHP超文本预处理程序,是一种嵌入HTML的脚本语言,运行在服务器. 搭建PHP开 ...

  2. PL/SQL之包

    1.包的定义 一个包由两个独立的部分组成--包头和包体.给部分被单独地存放在数据字典中. .1定义包头 语法: CREATE [OR REPLACE] PACKAGE [schema.] packag ...

  3. Centos 7 ip地址

    vim /etc/sysconfig/network-scripts/ifcfg-ens33 HWADDR="00:15:5D:07:F1:02" TYPE="Ether ...

  4. SQL 事务与锁

    了解事务和锁 事务:保持逻辑数据一致性与可恢复性,必不可少的利器. 锁:多用户访问同一数据库资源时,对访问的先后次序权限管理的一种机制,没有他事务或许将会一塌糊涂,不能保证数据的安全正确读写. 死锁: ...

  5. SpringBoot 初体验

    1.Spring Boot 简介 简化Spring应用开发的一个框架 整个Spring技术栈的一个大整合 J2EE开发的一站式解决方案 2.微服务 2014, martin fowler 微服务:架构 ...

  6. js 判断浏览器是否64位

    js判断是否64位 浏览器 navigator.userAgent.match(/x64/i);

  7. csharp: 图片字符间距

    引用WINDOWS API: [DllImport("gdi32.dll", CharSet = CharSet.Auto)] public static extern int S ...

  8. openlayers研究(一) 初始化流程

    下载2.13.1.解压缩.根据readme解释,openlayers.js是一个压缩库,.light是一个图像显示的简化库,mobile顾名思义应该是应对移动设备的库.build里面有py写的打包工具 ...

  9. GitHub初步探索-1-使用本地代码管理工具,简化上传的过程

    使用GitHub对于我们写Java的同志们来说是一个非常好的代码存储的方式,但是因为是全英文的,操作起来有一点复杂,所以我不是经常使用 ,但是最近代码越敲越多,再加上老师要求,希望使用比较简单的方法来 ...

  10. IIS支持http协议的:put、delete等方法

    HTTP常见方法:DELETE, GET, HEAD, OPTIONS, POST, PUT, PATCH 以下是从网上搜索的方法:其实经过测试,只配置最后那个web.config就可以实现这个功能: ...