BZOJ 2424: [HAOI2010]订货 费用流
2424: [HAOI2010]订货
Description
某公司估计市场在第i个月对某产品的需求量为Ui,已知在第i月该产品的订货单价为di,上个月月底未销完的单位产品要付存贮费用m,假定第一月月初的库存量为零,第n月月底的库存量也为零,问如何安排这n个月订购计划,才能使成本最低?每月月初订购,订购后产品立即到货,进库并供应市场,于当月被售掉则不必付存贮费。假设仓库容量为S。
Input
Output
Sample Input
3 1 1000
2 4 8
1 2 4
Sample Output
HINT
- ///meek
- #include<bits/stdc++.h>
- using namespace std ;
- typedef long long ll;
- #define mem(a) memset(a,0,sizeof(a))
- #define pb push_back
- const int MAXN = ;
- const int MAXM = ;
- const int INF = 0x3f3f3f3f;
- struct Edge
- {
- int to,next,cap,flow,cost;
- }edge[MAXM];
- int head[MAXN],tol;
- int pre[MAXN],dis[MAXN];
- bool vis[MAXN];
- int N;//节点总个数,节点编号从0~N-1
- void init(int n)
- {
- N = n;
- tol = ;
- memset(head,-,sizeof(head));
- }
- void add(int u,int v,int cap,int cost) //点u至点v,容量,花费
- {
- edge[tol].to = v;
- edge[tol].cap = cap;
- edge[tol].cost = cost;
- edge[tol].flow = ;
- edge[tol].next = head[u];
- head[u] = tol++;
- edge[tol].to = u;
- edge[tol].cap = ;
- edge[tol].cost = -cost;
- edge[tol].flow = ;
- edge[tol].next = head[v];
- head[v] = tol++;
- }
- bool spfa(int s,int t)
- {
- queue<int>q;
- for(int i = ;i < N;i++)
- {
- dis[i] = INF;
- vis[i] = false;
- pre[i] = -;
- }
- dis[s] = ;
- vis[s] = true;
- q.push(s);
- while(!q.empty())
- {
- int u = q.front();
- q.pop();
- vis[u] = false;
- for(int i = head[u]; i != -;i = edge[i].next)
- {
- int v = edge[i].to;
- if(edge[i].cap > edge[i].flow &&
- dis[v] > dis[u] + edge[i].cost )
- {
- dis[v] = dis[u] + edge[i].cost;
- pre[v] = i;
- if(!vis[v])
- {
- vis[v] = true;
- q.push(v);
- }
- }
- }
- }
- if(pre[t] == -)return false;
- else return true;
- }
- //返回的是最大流,cost存的是最小费用
- int minCostMaxflow(int s,int t,int &cost)
- {
- int flow = ;
- cost = ;
- while(spfa(s,t))
- {
- int Min = INF;
- for(int i = pre[t];i != -;i = pre[edge[i^].to])
- {
- if(Min > edge[i].cap - edge[i].flow)
- Min = edge[i].cap - edge[i].flow;
- }
- for(int i = pre[t];i != -;i = pre[edge[i^].to])
- {
- edge[i].flow += Min;
- edge[i^].flow -= Min;
- cost += edge[i].cost * Min;
- }
- flow += Min;
- }
- return flow;
- }
- const int maxn=+;
- const int inff=;
- int main()
- {
- int n,m,S;
- scanf("%d%d%d",&n,&m,&S);
- int beg=,ends=,x;
- init();
- for(int i=;i<=n;i++) {
- scanf("%d",&x);
- add(i,ends,x,);
- }
- for(int i=;i<=n;i++) {
- scanf("%d",&x);
- add(,i,inff,x);
- }
- for(int i=;i<n;i++) { add(i,i+,S,m); }
- int ans=;
- minCostMaxflow(,ends,ans);
- cout<<ans<<endl;
- return ;
- }
代码
BZOJ 2424: [HAOI2010]订货 费用流的更多相关文章
- BZOJ 2424: [HAOI2010]订货(最小费用最大流)
最小费用最大流..乱搞即可 ------------------------------------------------------------------------------ #includ ...
- BZOJ 2424: [HAOI2010]订货
2424: [HAOI2010]订货 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 915 Solved: 639[Submit][Status][ ...
- BZOJ 2424: [HAOI2010]订货(费用流)
裸的费用流了= =从源点向每个点连费用为di,从汇点向每个点连流量为ui,每个点向下一个点连费用为m,流量为s的边就行了 CODE: #include<cstdio>#include< ...
- bzoj 2424: [HAOI2010]订货 (费用流)
直接费用流,天数就是点数 type arr=record toward,next,cap,cost:longint; end; const maxm=; maxn=; mm=<<; var ...
- 【bzoj2424】[HAOI2010]订货 费用流
原文地址:http://www.cnblogs.com/GXZlegend/p/6825296.html 题目描述 某公司估计市场在第i个月对某产品的需求量为Ui,已知在第i月该产品的订货单价为di, ...
- BZOJ2424 [HAOI2010]订货 - 费用流
题解 (非常裸的费用流 题意有一点表明不清: 该月卖出的商品可以不用算进仓库里面. 然后套上费用流模板 代码 #include<cstring> #include<queue> ...
- 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 ...
- 2424: [HAOI2010]订货
2424: [HAOI2010]订货 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 922 Solved: 642[Submit][Status][ ...
- [bzoj 1449] 球队收益(费用流)
[bzoj 1449] 球队收益(费用流) Description Input Output 一个整数表示联盟里所有球队收益之和的最小值. Sample Input 3 3 1 0 2 1 1 1 1 ...
随机推荐
- c++基础(二):成员he派生类
struct Date{ int day, month, year; }; struct Book{ string name; Date date; void init(string n, int y ...
- Function-两个日期大小比较
function checkDate(from,to){ if (from == "" || to == "") return 2; var rValue = ...
- 利用while(code!=EOF){}来实现“无限”循环
#include <stdio.h>int main(){ char a,b,c; char t; while(scanf("%c%c%c",& ...
- SQL SERVER发布与订阅 [原创]
一.配置分发 1.配置分发服务器,注:配置发布与订阅,连接SQLSERVER必须用服务器名登录 2.配置分发 3.选择分发服务器 4.选择快照文件夹 5.设置此文件夹的读写权限为everyone 6. ...
- 查mysql字段中的数字记录
select * from a where nameregexp '^[0-9]+$' ;
- Teamwork——Week4 团队项目之NABC
项目框架——NABC模型 一.N(Need需求) 我们组主要的用户对象是第三小组——UI小组的同学们,因此我们的用户需求就是他们的数据需求. 1)提供给UI小组整理好的数据库,和前一组讨论好数据结构. ...
- BICEP单元测试计划-四则运算-测试
一.6个值得测试的具体部位,他们能够提高你的测试技巧 Right-结果是否正确? B-是否所有的边界条件都是正确的? I-能查一下反向关联吗? C-能用其他手段交叉检查一下结果吗? E-你是否可以强制 ...
- CS小分队第一阶段冲刺站立会议(5月7日)
昨日完成任务:1.完成了游戏2048退出自动保存功能,进入自动读取存档功能, 2.完成游戏失败判断函数, 3.为游戏添加了背景音乐并且可以手动开关 遇到的困难:使用数据库时由于使用的ACCESS版本比 ...
- poj 2299 求逆序数
#include <iostream> ; int a[MAX]; int swap[MAX]; //临时数组 int n; //数组a的长度 __int64 result; //数组a中 ...
- IIS8中 出现ashx 401:未授权,uploadify上传文件失败
环境:阿里云服务器 windows2012 + IIS8 +asp.net 访问IIS 出现能正常访问aspx页面,但是通过ajax访问ashx上传文件的时候就出现ashx Status Code ...