题目链接:https://vjudge.net/problem/UVA-11613 题意: 商品X在第i个月内:生产一件需要花费mi元,最多可生产ni件,销售一件(在这个月内销售,而不管它是在那个月生产的)的价格是pi元, 最多能销售si件, 在这个月生产的产品的保质期为Ei.对于所有商品X,每“保质”一个月,就要花费I元.问:在M个月内,最多能获利多少? 题解: 最小费用流问题,建图方式如下(详情在<训练指南>P367): 1.把每个月拆成两个点,一个点为生产,另一个点为销售. 2.如果月x…
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33452 [思路] 最小费用流. 构图: 1 每个月建立2个点,建立st点 2 相应连边,代价cost为正,盈利cost为负. 跑最小费用流,即当费用大于0时停止最短路增广.即在满足相应流量的限制下不要求流量,只要求费用最小. [代码] #include<cstdio> #include<cstring> #include<queue> #…
题目大意:有一种商品X,其每每单位存放一个月的代价I固定.并且已知其每月的最大生产量.生产每单位的的代价.最大销售量和销售单价,还已知每个月生产的X能最多能存放的时间(以月为单位).问只考虑前m个月,最多能获得多少利润. 题目分析:增加源点s和汇点t,将每一个月视作一个节点.建立图模型如下:将每一个节点拆成两个,即将v拆成v和v1,从s向所有的v连一条弧,容量为该月最大生产量,费用为该月的单位生产代价:然后从所有的v1出发连一条弧向t,容量为该月最大销售量,费用为销售单价的相反数:最后,从v出发…
/** 题目:Acme Corporation UVA - 11613 拆点法+最大费用最大流(费用取相反数)+费用有正负 链接:https://vjudge.net/problem/UVA-11613 题意:m个月生产销售商品,求获得的最大利润.具体细节. 第i个月生产一件商品费用为mi,可以最多生产ni件,卖出一件商品价格为pi,最多卖出si件, 该月生产的商品 最多可以可以存放ei个月,即:i+1<= x <= i+ei 就是可以保存的时间,在该时间内可以拿出来卖. 每件商品储存一个月的…
UVA11613 Acme Corproation 生产销售计划 题目大意 A公司生产一种元素,给出该元素在未来M个月中每个月的单位售价,最大生产量,生产成本,最大销售量和最大存储时间,和每月存储代价,问这家公司在M个月内所能赚大的最大利润(题意来源:http://blog.csdn.net/l123012013048/article/details/47962965) 题解 每个月拆成两个点,用于表示存储.S向X集合点连生产成本,X集合向Y集合连存储成本,Y集合向T连收益. 跑最小费用流.不要…
题意好长....变量好多.... 增加源点跟汇点.然后将每个月份看成一个点,然后拆成两个点u 跟 u+n. 从s向每个u连一条<n[u], m[i]>的弧,表示最多生产量及价值. 从每个u+n向t连一条<s[i], -p[i]>的弧,表示最多销量及价值. 对于存放的情况 for(int j=0; j<=e[u] ; j++) if(u + j <= M) ,由u向u+j+M连一条<INF, I*j>的弧,表示存放所要花费的价值. 这题并不需要满足销量最大,也…
Code: #include<cstdio> #include<cstring> #include<vector> #include<queue> #include<algorithm> using namespace std; const int maxn=500; const int INF=10000000+23666; typedef long long ll; int s,t,n; struct Edge{ int from,to,co…
题意: Acme公司生产一种X元素,给出该元素在未来M个月中每个月的单位售价.最大产量.最大销售量,以及最大储存时间(过期报废不过可以储存任意多的量).你的任务是计算出公司能够赚到的最大利润. 分析: 把第i个月拆成i1和i2两个点,连一条s到i1的弧,容量为i月最大产量,费用为单位成本.连一条i2到t的弧,容量为最大销量,费用为单位售价的相反数.然后i1向i2连一条容量为INF费用为0的弧,代表当月销售.i1向其他j2连弧,容量为INF,费用为储藏代价. 另外,这个题属于流量不固定的最小费用流…
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51253 [思路] 固定流量的最小费用流. 拆点,将u拆分成u1和u2,连边(u1,u2,1,0)表示只能经过该点一次.跑流量为2的最小费用流. [代码] #include<cstdio> #include<cstring> #include<queue> #include<vector> #define FOR(a,b,c)…
集训的图论都快结束了,我才看懂了最小费用流,惭愧啊. = = 但是今天机械键盘到了,有弄好了自行车,好高兴\(^o^)/~ 其实也不是看懂,就会套个模板而已.... 这题最重要的就是一个: 多组输入一定要写个init()函数清空,并且输入的时候每次都要调用init() #include <map> #include <set> #include <list> #include <cmath> #include <queue> #include &…