题目描述

得到一个教训:不要妄想在网络流里面在线修改什么东西;在一开始建模的时候,就应该吧所有的可能考虑进去。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
#define MAXN 60
#define MAXM 9
#define MAXPT (MAXM*MAXN+MAXN)
#define MAXEG (MAXPT+MAXN*MAXN*MAXM)
#define INF 200000000struct node{int v,w,c;node *next,*back;
}edge[2*MAXEG+10],*adj[MAXPT+10],*ecnt=&edge[0],*fa[MAXPT+10];int n,m,s,t,dist[MAXPT+10];
bool vis[MAXPT+10];void addedge(int u,int v,int c,int w)
{node *p=++ecnt;p->v=v;p->w=w,p->c=c;p->next=adj[u],p->back=ecnt+1;adj[u]=p;p=++ecnt;p->v=u;p->w=0,p->c=0;p->next=adj[v],p->back=ecnt-1;adj[v]=p;
}
void read()
{int x;scanf("%d%d",&m,&n);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){scanf("%d",&x);for(int k=1;k<=n;k++)addedge(i,j*n+k,1,x*k);}s=0,t=n+m*n+1;for(int i=1;i<=n;i++)addedge(s,i,1,0);for(int i=n+1;i<=m*n+n;i++)addedge(i,t,1,0);
}
bool SPFA()
{int u,v;memset(vis,0,sizeof vis);for(int i=s;i<=t;i++)dist[i]=INF;queue<int> que;que.push(s);dist[s]=0,vis[s]=true;while(!que.empty()){u=que.front(); que.pop();vis[u]=false;for(node *p=adj[u];p;p=p->next){v=p->v;if(p->c>0&&dist[v]>dist[u]+p->w){dist[v]=dist[u]+p->w;fa[v]=p;if(!vis[v]){que.push(v);vis[v]=true;}}}}if(dist[t]==INF) return false;else return true;
}
void mincost_maxflow()
{int cost=0;while(SPFA()){int delta=INF;node *p;for(int u=t;u!=s;u=p->back->v){p=fa[u];delta=min(delta,p->c);}for(int u=t;u!=s;u=p->back->v){p=fa[u];p->c-=delta;p->back->c+=delta;p->back->w=-p->w;cost+=delta*p->w;}}printf("%.02lf\n",cost/(1.0*n));
}
int main()
{//freopen("1.in","r",stdin);read();mincost_maxflow();
}

转载于:https://www.cnblogs.com/katarinayuan/p/6572854.html

修车-最小费用最大流相关推荐

  1. BZOJ 1070: [SCOI2007]修车(最小费用最大流)

    建图很神奇..建完图其实就是裸的费用流了.. -------------------------------------------------------------- #include<cs ...

  2. bzoj 1070: [SCOI2007]修车【最小费用最大流】

    一开始从客人角度想的,怎么建都不对 从一个修车工所接待的所有顾客花费的总时间来看,设一共有x个人,那么第一个修的对总时间的贡献是x*w1,第二个是(x-1)*w2-以此类推.所以把第i个修车工拆成n组 ...

  3. 洛谷 P2053 [SCOI2007]修车 网络流 最小费用最大流 Dinic+Spfa

    题目链接: https://www.luogu.com.cn/problem/P2053 思路参考博客: https://www.luogu.com.cn/blog/a23333/solution-p ...

  4. [SCOI2007]修车,洛谷P2053,最小费用最大流

    正题 给出m个师傅,n台车,并给出每个师傅各个车的时间,现在要使得,n辆车一起来,等待时间最短. 我们来观察一个师傅所消耗的等待时间.m个师傅所消耗的总等待时间就是车主的总等待时间. 对于第a个师傅, ...

  5. 乌鲁木齐网络赛J题(最小费用最大流模板)

    ACM ICPC 乌鲁木齐网络赛 J. Our Journey of Dalian Ends 2017-09-09 17:24 243人阅读 评论(0) 收藏 举报  分类: 网络流(33)  版权声 ...

  6. POJ - 2516 Minimum Cost 最小费用最大流

    题目链接 题意:给n,m,k表示商店数,储存店数,种类数 然后给n*k表示每个水果店需求每种种类的数量: 表示成 need[i][j] 再给m*k表示每个储存店每种种类数量: 表示成store[i][ ...

  7. pku The Windy's KM最小权匹配 or 最小费用最大流

    http://poj.org/problem?id=3686 题意: 给定n个玩具,有m个车间,给出每个玩具在每个车间的加工所需的时间mat[i][j]表示第i个玩具在第j个车间加工所需的时间,规顶只 ...

  8. c语言最小费用流_策略算法工程师之路-图优化算法(一)(二分图amp;最小费用最大流)...

    目录 1.图的基本定义 2.双边匹配问题 2.1 二分图基本概念 2.2 二分图最大匹配求解 2.3 二分图最优匹配求解 2.4 二分图最优匹配建模实例 2.4.1 二分图最优匹配在师生匹配中的应用 ...

  9. 有源汇上下界最小费用可行流 ---- P4553 80人环游世界(拆点 + 有源汇上下界最小费用可行流)

    题目链接 题目大意: 解题思路: 又是一道裸题 . 首先它要求第iii个点只经过ViViVi那么我们就拆点ai,ai+na_i,a_{i+n}ai​,ai+n​一个点为入点,一个为出点这条边的流量范围 ...

最新文章

  1. java开源springboot项目_springBoot 搭建web项目(前后端分离,附项目源代码地址)...
  2. Nginx/LVS/HAProxy 负载均衡软件的优缺点详解
  3. Html5-Canvas实现简易的抽奖转盘
  4. python对字典的基本操作(遍历、排序)总结,Python字典操作简明总结
  5. 缓存-分布式锁-分布式锁原理与使用
  6. mysql数据库服务器名_mysql数据库服务器名
  7. Java笔记-Spring Boot使用外部Tomcat及解决Tomcat乱码
  8. 一个关于if else容易迷惑的问题(转自鸟哥公众号)
  9. 静态代理和动态代理设计模式
  10. 安徽省级办公室高级应用计算机二级,2019年9月安徽省计算机等级二级考试教程:二级MSOffice高级应用上机指导...
  11. Socket TCP UDP
  12. 登录phpmyadmin提示: #1045 无法登录 MySQL 服务器
  13. php tp admin怎么安装,TP的配置及安装 · Thinkphp5.1+AdminLTE内容管理系统(商城版) 请不要购买 到群上下载源码 · 看云...
  14. flume系列之:清理HDFS上的tmp文件,把.gz.tmp文件变为.gz文件
  15. Python:数据类型转换之将Scikit-learn的Bunch数据类型转换为Pandas的DataFrame类型案例及代码实现
  16. android平板电脑手写笔应用,三星旗舰Android平板电脑将配备手写笔 小米5C使用自家松果处理器...
  17. Python之路【第八篇】:面向对象的程序设计
  18. python识别二维码条形码?用pyzbar一招搞掂(含代码)!
  19. ps2021一键换天空教程,来看看吧
  20. Vue3 10多种组件通讯方法

热门文章

  1. c语言 由函数组成的数组,学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的_考题宝...
  2. linux安装gd,linux下 安装GD
  3. element-ui本地使用
  4. 【HDOJ6957】Maximal submatrix(单调栈,最大子矩阵面积)
  5. 2018 “百度之星”程序设计大赛 - 初赛(A)P1002度度熊学队列(双端队列模拟,STL)
  6. 【NOIP2002】【Luogu1032】字串变换
  7. 线性回归和逻辑回归的区别_Spark实现线性回归与逻辑回归算法
  8. 第二章节 ASP.NET 验证控件(二)
  9. JavaScript函数内可以调用另一个函数(3)
  10. 计算机安装时的用户权限,如何设置win10系统使得电脑在安装软件前需要管理员的权限...