1070: [SCOI2007]修车

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 5860  Solved: 2487
[Submit][Status][Discuss]

Description

  同一时刻有N位车主带着他们的爱车来到了汽车维修中心。维修中心共有M位技术人员,不同的技术人员对不同
的车进行维修所用的时间是不同的。现在需要安排这M位技术人员所维修的车及顺序,使得顾客平均等待的时间最
小。 说明:顾客的等待时间是指从他把车送至维修中心到维修完毕所用的时间。

Input

  第一行有两个m,n,表示技术人员数与顾客数。 接下来n行,每行m个整数。第i+1行第j个数表示第j位技术人
员维修第i辆车需要用的时间T。

Output

  最小平均等待时间,答案精确到小数点后2位。

Sample Input

2 2
3 2
1 4

Sample Output

1.50
把修车师傅拆成 n*m个修车师傅 然后具体 //  还是看这里吧http://hzwer.com/2877.html
 1 #include<cstdio>
 2 #include<queue>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 const int N=1000;
 7 const int M=5e5+88;
 8 const int INF=0x3f3f3f3f;
 9 int mp[88][11];
10 struct node{
11    int u,v,flow,cost,next;
12 }e[M];
13 int tot,head[N],pre[N],C[N],F[N],V[N],n,m;
14 void add(int u,int v,int flow,int cost){
15    e[tot].u=u;e[tot].v=v;e[tot].flow=flow;e[tot].cost=cost;e[tot].next=head[u];head[u]=tot++;
16    e[tot].u=v;e[tot].v=u;e[tot].flow=0;e[tot].cost=-cost;e[tot].next=head[v];head[v]=tot++;
17 }
18 int SPFA(int s,int t){
19     memset(pre,-1,sizeof(pre));
20     for(int i=1;i<=t+1;++i) F[i]=0,C[i]=INF,V[i]=0;
21     queue<int>Q;
22     Q.push(s);
23     C[0]=0,F[0]=INF,V[0]=1;
24     while(!Q.empty()){
25         int u=Q.front();
26         Q.pop();
27         V[u]=0;
28         for(int i=head[u];i+1;i=e[i].next){
29             int v=e[i].v,f=e[i].flow,c=e[i].cost;
30             if(f>0&&C[v]>C[u]+c) {
31                 C[v]=C[u]+c;
32                 pre[v]=i;
33                 F[v]=min(f,F[u]);
34                 if(!V[v]) V[v]=1,Q.push(v);
35             }
36         }
37     }
38     return F[t];
39 }
40 int MCMF(int s,int t){
41     int ans=0,temp;
42     while(temp=SPFA(s,t)){
43         for(int i=pre[t];i+1;i=pre[e[i].u]) {
44             ans+=temp*e[i].cost;
45             e[i].flow-=temp;
46             e[i^1].flow+=temp;
47         }
48     }
49     return ans;
50 }
51 int main(){
52    memset(head,-1,sizeof(head));
53    scanf("%d%d",&m,&n);
54    for(int i=1;i<=n;++i)
55     for(int j=1;j<=m;++j)
56     scanf("%d",&mp[i][j]);//mp[i][j],顾客--修车人员
57    int st=0,ed=m*n+n+1;
58    for(int i=1;i<=n*m;++i) add(0,i,1,0);
59     for(int i=n*m+1;i<=n*m+n;++i) add(i,ed,1,0);
60     for(int i=1;i<=m;++i)
61         for(int j=1;j<=n;++j)
62         for(int k=1;k<=n;++k)
63        add((i-1)*n+j,n*m+k,1,mp[k][i]*j);
64     int ct=MCMF(st,ed);
65     printf("%.2f\n",double(ct)/n);
66 }

转载于:https://www.cnblogs.com/mfys/p/7182910.html

BZOJ 1070 拆点 费用流相关推荐

  1. BZOJ 1877 拆点费用流

    思路: 呃  水题不解释 行么,, //By SiriusRen #include <queue> #include <cstdio> #include <cstring ...

  2. BZOJ.2597.[WC2007]剪刀石头布(费用流zkw)

    BZOJ 洛谷 \(Description\) 给定一张部分边方向已确定的竞赛图.你需要给剩下的边确定方向,使得图中的三元环数量最多. \(n\leq100\). \(Solution\) 这种选择之 ...

  3. BZOJ 2696 航班安排 费用流

    题目大意:K架飞机,N个机场,以0..N-1编号,其中0号为基地机场,每天0时刻起飞机从该机场起飞,并不晚于T时刻回到该机场.M个包机请求,每个请求为在s时刻从a机场起飞,在恰好t时刻到达b机场,可以 ...

  4. BZOJ 2879 美食节(费用流-动态加边)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2879 题意:有n道菜,每道菜需要b[i]份,m个厨师,第j个厨师做第i道菜需要时间a[i ...

  5. bzoj 1061 志愿者招募 费用流

    详见BYV的博客,写的非常全面https://www.byvoid.com/blog/noi-2008-employee /************************************** ...

  6. [费用流]Bzoj P1877 晨跑

    Description Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他 坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个 ...

  7. 【bzoj2324】[ZJOI2011]营救皮卡丘 最短路-Floyd+有上下界费用流

    原文地址:http://www.cnblogs.com/GXZlegend/p/6832504.html 题目描述 皮卡丘被火箭队用邪恶的计谋抢走了!这三个坏家伙还给小智留下了赤果果的挑衅!为了皮卡丘 ...

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

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

  9. [BZOJ 1221][HNOI2001]软件开发(费用流)

    Description 某软件公司正在规划一项n天的软件开发计划,根据开发计划第i天需要ni个软件开发人员,为了提高软件开发人员的效率,公司给软件人员提供了很多的服务,其中一项服务就是要为每个开发人员 ...

最新文章

  1. iframe怎么用_怎么样减少无效URL的爬行和索引
  2. tornado项目搭建_Day71-73 BBS项目(1)
  3. 阿里巴巴2018年纳税516亿元,稳居行业第一名,大家怎么看?
  4. validate+jquery+ajax表单验证
  5. navicat循环执行上下两行相减sql语句_SQL太难?你离完全理解SQL就差这10步!
  6. 表示不同文件类型的魔术数字
  7. sqlerror.java 1074_java.sql.SQLException: Before start of result set异常
  8. 《大道至简》阅读笔记02
  9. “+=”和append的区别
  10. java笔记高级部分
  11. android+制作开机动画,Android 开机动画制作详解
  12. “自由软件”已过时?
  13. mysql 数据库建模工具 mysqlworkbench
  14. 我的网站防盗链和屏蔽蜘蛛的iis8.5 web.config功能
  15. 从招聘网站分析大数据相关职位现状
  16. set和hashset区别及用法
  17. Android仿微信添加联系人列表,内附有截图和demo源码
  18. 2019年互联网公司月饼颜值大比拼!
  19. mysql事务使用转化_Mysql事务
  20. 如何写朋克摇滚原创歌曲

热门文章

  1. php冒泡和选择排序,选择排序vs冒泡排序
  2. linux 没有权限登录,CentOS中让一个用户没有登录权限
  3. 【计算机组成原理】定点除法运算
  4. linux脚本变量运算符,linux——Shell 脚本基础篇(变量类型,变量操作,定义,运算与逻辑关系)...
  5. python语言是一门编程语言_python是一门怎样的编程语言?老男孩python入门
  6. 电脑cmd命令大全_电脑定时关机的方法(2)
  7. poj1251 Jungle Roads Kruskal算法+并查集
  8. USACO Training Section 1.2 [USACO1.2]回文平方数
  9. Swift3.0中如何完成不同View Controller之间的切换
  10. [链表]---链表相邻元素翻转