2424: [HAOI2010]订货

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

HINT

 
  1. ///meek
  2. #include<bits/stdc++.h>
  3. using namespace std ;
  4. typedef long long ll;
  5. #define mem(a) memset(a,0,sizeof(a))
  6. #define pb push_back
  7.  
  8. const int MAXN = ;
  9. const int MAXM = ;
  10. const int INF = 0x3f3f3f3f;
  11. struct Edge
  12. {
  13. int to,next,cap,flow,cost;
  14. }edge[MAXM];
  15. int head[MAXN],tol;
  16. int pre[MAXN],dis[MAXN];
  17. bool vis[MAXN];
  18. int N;//节点总个数,节点编号从0~N-1
  19. void init(int n)
  20. {
  21. N = n;
  22. tol = ;
  23. memset(head,-,sizeof(head));
  24. }
  25. void add(int u,int v,int cap,int cost) //点u至点v,容量,花费
  26. {
  27. edge[tol].to = v;
  28. edge[tol].cap = cap;
  29. edge[tol].cost = cost;
  30. edge[tol].flow = ;
  31. edge[tol].next = head[u];
  32. head[u] = tol++;
  33. edge[tol].to = u;
  34. edge[tol].cap = ;
  35. edge[tol].cost = -cost;
  36. edge[tol].flow = ;
  37. edge[tol].next = head[v];
  38. head[v] = tol++;
  39. }
  40. bool spfa(int s,int t)
  41. {
  42. queue<int>q;
  43. for(int i = ;i < N;i++)
  44. {
  45. dis[i] = INF;
  46. vis[i] = false;
  47. pre[i] = -;
  48. }
  49. dis[s] = ;
  50. vis[s] = true;
  51. q.push(s);
  52. while(!q.empty())
  53. {
  54. int u = q.front();
  55. q.pop();
  56. vis[u] = false;
  57. for(int i = head[u]; i != -;i = edge[i].next)
  58. {
  59. int v = edge[i].to;
  60. if(edge[i].cap > edge[i].flow &&
  61. dis[v] > dis[u] + edge[i].cost )
  62. {
  63. dis[v] = dis[u] + edge[i].cost;
  64. pre[v] = i;
  65. if(!vis[v])
  66. {
  67. vis[v] = true;
  68. q.push(v);
  69. }
  70. }
  71. }
  72. }
  73. if(pre[t] == -)return false;
  74. else return true;
  75. }
  76. //返回的是最大流,cost存的是最小费用
  77. int minCostMaxflow(int s,int t,int &cost)
  78. {
  79. int flow = ;
  80. cost = ;
  81. while(spfa(s,t))
  82. {
  83. int Min = INF;
  84. for(int i = pre[t];i != -;i = pre[edge[i^].to])
  85. {
  86. if(Min > edge[i].cap - edge[i].flow)
  87. Min = edge[i].cap - edge[i].flow;
  88. }
  89. for(int i = pre[t];i != -;i = pre[edge[i^].to])
  90. {
  91. edge[i].flow += Min;
  92. edge[i^].flow -= Min;
  93. cost += edge[i].cost * Min;
  94. }
  95. flow += Min;
  96. }
  97. return flow;
  98. }
  99.  
  100. const int maxn=+;
  101. const int inff=;
  102.  
  103. int main()
  104. {
  105. int n,m,S;
  106. scanf("%d%d%d",&n,&m,&S);
  107. int beg=,ends=,x;
  108. init();
  109. for(int i=;i<=n;i++) {
  110. scanf("%d",&x);
  111. add(i,ends,x,);
  112. }
  113. for(int i=;i<=n;i++) {
  114. scanf("%d",&x);
  115. add(,i,inff,x);
  116. }
  117. for(int i=;i<n;i++) { add(i,i+,S,m); }
  118. int ans=;
  119. minCostMaxflow(,ends,ans);
  120. cout<<ans<<endl;
  121. return ;
  122. }

代码

 

BZOJ 2424: [HAOI2010]订货 费用流的更多相关文章

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

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

  2. BZOJ 2424: [HAOI2010]订货

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

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

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

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

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

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

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

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

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

  7. 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 ...

  8. 2424: [HAOI2010]订货

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

  9. [bzoj 1449] 球队收益(费用流)

    [bzoj 1449] 球队收益(费用流) Description Input Output 一个整数表示联盟里所有球队收益之和的最小值. Sample Input 3 3 1 0 2 1 1 1 1 ...

随机推荐

  1. html5 shiv

    使用html5标签吧!ie6.ie7.ie8不支持怎么办?它的原理是如此的简单:    1.document.createElement("ele");  // js虚拟创建一个元 ...

  2. HTML5做的浏览器欢迎界面自动跳转

    HTML5做的浏览器欢迎界面自动跳转 思路很简单,随手装逼呗.根据时间来控制背景图和文字,背景图加了毛玻璃效果,效果直接看图,用javascript来实现. 完整代码 <!DOCTYPE htm ...

  3. 谈谈C#中的 Dispose 和 Finalize

    主要有一下几点需要知道: 1. Dispose需要实现IDisposable接口. Finalize就是c#中的析构方法,方法名以~开始. 2. Dispose由开发人员代码调用,而Finalize由 ...

  4. 利用FormsAuthentication.RedirectFromLoginPage进行身份验证

    web.config中: <authentication>节 格式: <authentication mode="Forms">    //I.Window ...

  5. NET Core静态文件的缓存方式

    NET Core静态文件的缓存方式 阅读目录 一.前言 二.StaticFileMiddleware 三.ASP.NET Core与CDN? 四.写在最后 回到目录 一.前言 我们在优化Web服务的时 ...

  6. 向Array中添加堆排序

    堆排序思路 堆排序是一种树形选择排序方法(注意下标是从1开始的,也就是R[1...n]). 1) 初始堆: 将原始数组调整成大根堆的方法——筛选算法:比较R[2i].R[2i+1]和R[i],将最大者 ...

  7. C# 或 JQuery导出Excel

    首先要添加NPOI.dll文件 然后添加类:NPOIHelper.cs using System; using System.Data; using System.Configuration; usi ...

  8. 再论 ASP.NET 中获取客户端IP地址

    说到IP获取无非是我们常见的以下几种方式,但是具体获取的值具体区别在哪?网上不乏相关文章,说的也是很详细,但是真正使用起来,还有很多不太对的地方.IP在不同系统中,应用相当广泛,常见的日志记录.广告分 ...

  9. Java_Swing实现小球沿正弦曲线运动的代码

    1 package zuidaimapack_1; import java.awt.*; import javax.swing.*; /** *Java_Swing实现小球沿正弦曲线运动的代码 * @ ...

  10. PHP中如何连接数据库基本语句

    只是后端修改页面,不需要在前端显示的可以删除原有代码只输入<?php 开始编写语言即可,后面的?>也可以省略 //造一个连接$connect = @mysql_connect(" ...