HDU 6118 度度熊的交易计划 最大费用可行流
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6118
题意:中文题
分析:
最小费用最大流,首先建立源点 s
,与超级汇点 t
。因为生产一个商品需要花费 a[i]
元,且上限为 b[i]
,所以我们从 s
向这些点之间连一条容量为 b[i]
,费用为 a[i]
的边。同样的道理,出售一个商品可以赚到 c[i]
元,最多出售 d[i]
个,于是我们从这些点向 t
连一条容量为 d[i]
,费用为 -c[i]
的边。最后所有的公路也是花费,从 u
到 v
连接一条双向边,容量为 INF
,费用为 k,然而要注意这道题并不是要求最大流,这道题要求的是可行流,这个只需要修改一下求增广的过程就可以了,最后答案就是费用流的相反数。
- #include <bits/stdc++.h>
- using namespace std;
- const int inf = 0x3FFFFFFF;
- const int maxn = 2222;
- struct node{
- int st, en, flow, cost, next;
- node(){}
- node(int st, int en, int flow, int cost, int next):st(st),en(en),flow(flow),cost(cost),next(next){}
- }E[101000];
- int num, p[maxn];
- void init(){
- memset(p, -1, sizeof(p));
- num = 0;
- }
- void add(int st, int en, int flow, int cost){
- E[num] = node(st, en, flow, cost, p[st]);
- p[st] = num++;
- E[num] = node(en, st, 0, -cost, p[en]);
- p[en] = num++;
- }
- int pre[maxn];
- int dis[maxn];
- bool fg[maxn];
- bool spfa(int st, int en)
- {
- for(int i=0;i<=en;i++){
- fg[i] = 0, dis[i] = inf, pre[i]=-1;
- }
- queue<int>q;
- q.push(st);
- fg[st]=1;
- dis[st]=0;
- while(!q.empty()){
- int u = q.front(); q.pop();
- fg[u]=0;
- for(int i=p[u];~i;i=E[i].next){
- int v = E[i].en;
- if(E[i].flow&&dis[v]>dis[u]+E[i].cost){
- dis[v] = dis[u]+E[i].cost;
- pre[v]=i;
- if(!fg[v]){
- fg[v]=1;
- q.push(v);
- }
- }
- }
- }
- // if(dis[en] < inf) return 1;
- // return 0;
- return dis[en]<=0;
- }
- int solve(int st, int en){
- int ans=0;
- while(spfa(st,en)){
- int d = inf;
- for(int i=pre[en];i+1;i=pre[E[i].st]) d = min(d, E[i].flow);
- for(int i=pre[en];i+1;i=pre[E[i].st]){
- E[i].flow -= d;
- E[i^1].flow += d;
- ans += d*E[i].cost;
- }
- }
- return ans;
- }
- int main()
- {
- int n,m;
- while (cin>>n>>m)
- {
- init();
- int s=0,t=n+1,cost;
- for (int i=1; i<=n; i++)
- {
- int a,b,c,d;
- cin>>a>>b>>c>>d;
- add(s,i,b,a);
- add(i,t,d,-c);
- }
- while (m--)
- {
- int u,v,k;
- cin>>u>>v>>k;
- add(u,v,inf,k);
- add(v,u,inf,k);
- }
- int ans = -solve(s,t);
- printf("%d\n", ans);
- }
- return 0;
- }
HDU 6118 度度熊的交易计划 最大费用可行流的更多相关文章
- HDU 6118 度度熊的交易计划(最小费用最大流)
Problem Description度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题: 喵哈哈村以及周围的村庄可以看做是一共由n个片区,m条公路组成的地区. 由于生产能力的区别,第i个 ...
- HDU 6118 度度熊的交易计划(费用流)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6118 [题目大意] 给出一张无向边权图,每个点最多可以生产b[i]商品,每件代价为a[i], 每个 ...
- HDU 6118 度度熊的交易计划 【最小费用最大流】 (2017"百度之星"程序设计大赛 - 初赛(B))
度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- hdu 6118度度熊的交易计划(费用流)
度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- HDU 6118 度度熊的交易计划 (最小费用流)
度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- hdu 6118 度度熊的交易计划
度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- 2017"百度之星"程序设计大赛 - 初赛(B) 度度熊的交易计划 最小费用最大流求最大费用
/** 题目:度度熊的交易计划 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6118 题意:度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题 ...
- HDU 6118 度度熊的交易计划(网络流-最小费用最大流)
度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题: 喵哈哈村以及周围的村庄可以看做是一共由n个片区,m条公路组成的地区. 由于生产能力的区别,第i个片区能够花费a[i]元生产1个商品,但 ...
- HDU 6118 2017百度之星初赛B 度度熊的交易计划(费用流)
度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
随机推荐
- Java线程常用方法详解
线程的常用方法 1.start() : 线程调用该方法将启动线程,使之从新建状态进入就绪队列排队,一旦轮到它来享用CPU资源时,就可以脱离创建它的线程独立开始自己的生命周期了. 2.run(): Th ...
- vue-cli开发时,ajax跨域详细解决办法
在config/index.js中进行如下配置 [即在进行ajax请求时,地址中任何以/api开头的请求地址都被解析为目标地址,target就是你想要的后台接口地址] proxyTable: { '/ ...
- 2016 China Final E - Bet
/************************************************************************* > File Name: E.cpp > ...
- [洛谷P3833][SHOI2012]魔法树
题目大意:给一棵树,路径加,子树求和 题解:树剖 卡点:无 C++ Code: #include <cstdio> #include <iostream> #define ma ...
- UVA.10305 Maximum Product (暴力)
UVA.10305 Maximum Product (暴力) 题意分析 直接枚举起点和重点,然后算出来存到数组里面,sort然后取最大值即可. 代码总览 #include <iostream&g ...
- 项目管理---git----快速使用git笔记(一)------git的简单介绍
最近svn代码管理服务器崩溃了,切换到git来运作. 经过几天的使用,感觉很不错. 尤其是代码合并到正式版本之前 可以对代码进行 code review. 这样能很好的保证团队的代码质量和一些重复代码 ...
- bzoj3302&bzoj2447&bzoj2103(树的重心)
三倍的幸福! 暴力的做法就是枚举每一条边断开,选的两个点就是左右两棵树的重心. 可以发现找重心的时候一定是往权和大的子树找的,需要维护一个点的最大和次大子树,因为最大子树可能被割掉了,实际效率为O(N ...
- mybatis Mapper 中resultType使用方法及返回值为Map的写法
mybatis学习(七)——resultType解析 resultType是sql映射文件中定义返回值类型,返回值有基本类型,对象类型,List类型,Map类型等.现总结一下再解释 总结: resul ...
- Linux环境下用Weblogic发布项目【二】 -- 配置Domain域
配置注意事项: 修改密码时密码长度最少8位:在"<下一步>"后面为空即表示敲回车: 具体配置步骤如下: [root@GPS-App ~]# [root@GPS-App ...
- eclipse的最新版本luna的中建立svn和maven
http://blog.csdn.net/notillusion/article/details/40950185