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. c++基础(二):成员he派生类

    struct Date{ int day, month, year; }; struct Book{ string name; Date date; void init(string n, int y ...

  2. Function-两个日期大小比较

    function checkDate(from,to){ if (from == "" || to == "") return 2; var rValue = ...

  3. 利用while(code!=EOF){}来实现“无限”循环

    #include <stdio.h>int main(){    char a,b,c;    char t;    while(scanf("%c%c%c",& ...

  4. SQL SERVER发布与订阅 [原创]

    一.配置分发 1.配置分发服务器,注:配置发布与订阅,连接SQLSERVER必须用服务器名登录 2.配置分发 3.选择分发服务器 4.选择快照文件夹 5.设置此文件夹的读写权限为everyone 6. ...

  5. 查mysql字段中的数字记录

    select * from a where nameregexp '^[0-9]+$' ;

  6. Teamwork——Week4 团队项目之NABC

    项目框架——NABC模型 一.N(Need需求) 我们组主要的用户对象是第三小组——UI小组的同学们,因此我们的用户需求就是他们的数据需求. 1)提供给UI小组整理好的数据库,和前一组讨论好数据结构. ...

  7. BICEP单元测试计划-四则运算-测试

    一.6个值得测试的具体部位,他们能够提高你的测试技巧 Right-结果是否正确? B-是否所有的边界条件都是正确的? I-能查一下反向关联吗? C-能用其他手段交叉检查一下结果吗? E-你是否可以强制 ...

  8. CS小分队第一阶段冲刺站立会议(5月7日)

    昨日完成任务:1.完成了游戏2048退出自动保存功能,进入自动读取存档功能, 2.完成游戏失败判断函数, 3.为游戏添加了背景音乐并且可以手动开关 遇到的困难:使用数据库时由于使用的ACCESS版本比 ...

  9. poj 2299 求逆序数

    #include <iostream> ; int a[MAX]; int swap[MAX]; //临时数组 int n; //数组a的长度 __int64 result; //数组a中 ...

  10. IIS8中 出现ashx 401:未授权,uploadify上传文件失败

    环境:阿里云服务器 windows2012  + IIS8 +asp.net 访问IIS 出现能正常访问aspx页面,但是通过ajax访问ashx上传文件的时候就出现ashx  Status Code ...