题目描述

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

说明:顾客的等待时间是指从他把车送至维修中心到维修完毕所用的时间。

输入输出格式

输入格式:

第一行有两个数M,N,表示技术人员数与顾客数。

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

输出格式:

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

输入输出样例

输入样例#1:

2 2
3 2
1 4
输出样例#1:

1.50

说明

(2<=M<=9,1<=N<=60), (1<=T<=1000)

费用流

建好图 跑模板。

屠龙宝刀点击就送

#include <ctype.h>
#include <cstring>
#include <cstdio>
#include <queue>
#define M 50005
#define inf 0x7fffffff
using namespace std;
void read(int &x)
{
x=;bool f=;
register char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=;
for(;isdigit(ch);ch=getchar()) x=x*+ch-'';
x=f?(~x)+:x;
}
struct Edge
{
int next,to,flow,value;
Edge (int next=,int to=,int flow=,int value=) : next(next),to(to),flow(flow),value(value) {}
}edge[M<<];
bool vis[M<<];
int ti[][],m,n,head[M<<],cnt=,fa[M<<],dis[M<<];
void insert(int u,int v,int w,int l)
{
edge[++cnt]=Edge(head[u],v,w,l);
head[u]=cnt;
}
bool spfa(int s,int t)
{
for(int i=;i<=t;i++) {dis[i]=inf;vis[i]=;}
vis[s]=;
dis[s]=;
fa[s]=;
queue<int>q;
q.push(s);
while(!q.empty())
{
int x=q.front();
q.pop();
vis[x]=;
for(int i=head[x];i;i=edge[i].next)
{
int v=edge[i].to;
if(dis[v]>dis[x]+edge[i].value&&edge[i].flow>)
{
dis[v]=dis[x]+edge[i].value;
fa[v]=i;
if(!vis[v])
{
vis[v]=;
q.push(v);
}
}
}
}
return dis[t]<inf;
}
int dinic(int s,int t)
{
int cost=;
for(;spfa(s,t);)
{
int x=dis[t];
for(int i=t;i!=s;i=edge[fa[i]^].to)
{
edge[fa[i]].flow-=x;
edge[fa[i]^].flow+=x;
}
cost+=dis[t];
}
return cost;
}
int main()
{
read(m);
read(n);
int s=,t=n*m+n+;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
read(ti[i][j]);
for(int i=;i<=m;i++)
for(int j=;j<=n;j++)
for(int k=;k<=n;k++)
{
insert((i-)*n+j,n*m+k,,ti[k][i]*j);
insert(n*m+k,(i-)*n+j,,-ti[k][i]*j);
}
for(int i=;i<=m*n;i++)
{
insert(s,i,,);
insert(i,s,,);
}
for(int i=n*m+;i<t;i++)
{
insert(i,t,,);
insert(t,i,,);
}
printf("%.2lf",dinic(s,t)*1.0/n);
return ;
}

洛谷 P2053 [SCOI2007]修车的更多相关文章

  1. 洛谷 P2053 [SCOI2007]修车 解题报告

    P2053 [SCOI2007]修车 题目描述 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术 ...

  2. [bzoj1070] [洛谷P2053] [SCOI2007] 修车

    Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同 的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序, ...

  3. 洛谷 P2053 [SCOI2007]修车(最小费用最大流)

    题解 最小费用最大流 n和m是反着的 首先, \[ ans = \sum{cost[i][j]}*k \] 其中,\(k\)为它在当前技术人员那里,排倒数第\(k\)个修 我们可以对于每个技术人员进行 ...

  4. 洛谷$P2053\ [SCOI2007]$修车 网络流

    正解:网络流 解题报告: 传送门$QwQ$ 一个很妙的建图,,,说实话我麻油想到$QwQ$ 考虑对每个工人建$n$个点,表示这是他修的倒数第$i$辆车,就可以算出影响是$t\cdot i$,然后对每辆 ...

  5. P2053 [SCOI2007]修车(费用流)

    P2053 [SCOI2007]修车 顾客平均等待的最小时间$=$等待总时间$/n$ 考虑只有1个技术人员时,$n$辆车等待总时间 $A_1+(A_1+A_2)+(A_1+A_2+A_3)+...+\ ...

  6. 洛谷P2053 修车

    修车修到jiry报废(滑稽) 题意:m个人修n个车,同时开始. 每辆车只能给一个人修.每个人修每辆车的用时都不同. 问怎样安排能使每辆车的等待时间总和最少. 解: 一直想的是用以流量表示一个人,没想到 ...

  7. P2053 [SCOI2007]修车

    思路 很妙的网络流题目 最开始我简单的想直接把n个车的点和m个人员的点直接用cap=t(i,j)的边连起来,显然是假的,因为没有考虑到车主等待的时间长度 然后考虑分析将\(w_1,w_2,\dots, ...

  8. P2053 [SCOI2007]修车 费用流

    $ \color{#0066ff}{ 题目描述 }$ 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M ...

  9. 洛谷P2470 [SCOI2007]压缩(区间dp)

    题意 题目链接 Sol 神仙题Orz 考虑区间dp,如果我们只设\(f[l][r]\)表示\(s_{lr}\)被压缩的最小长度,而不去关心内部\(M\)分布的话,可能在转移的时候转移出非法状态 因此考 ...

随机推荐

  1. NOIP2009 靶型数独

    传送门 这道题比我想象之中要暴力一些. 自己一开始有一份写9*9数独的代码,自己试了一下直接交上去只有40分.看来这样是肯定不行的.考虑优化,想在中间贪贪心啥的,但是难以保证正确性.最后学了一招,从数 ...

  2. IOCP编程小结(中)

    上一篇主要谈了一些基本理念,本篇将谈谈我个人总结的一些IOCP编程技巧. 网络游戏前端服务器的需求和设计 首先介绍一下这个服务器的技术背景.在分布式网络游戏服务器中,前端连接服务器是一种很常见的设计. ...

  3. spark api之一:Spark官方文档 - 中文翻译

    转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 引入Spark(Linking with Spark) 3 初始化Spark(Initi ...

  4. 杂项-公司:Aspose

    ylbtech-杂项-公司:Aspose Aspose 于2002年3月在澳大利亚悉尼创建,旗下产品覆盖文档.图表.PDF.条码.OCR.CAD.HTML.电子邮件等各个文档管理领域,为全球.NET ...

  5. UI:一个IOS工程的标准框架

    来自cocachina 的写法 参考 声明:本文来自互联网,非本人原创,仅供参考学习使用. 我的iOS工程结构 接下来,我就简单介绍下我做iOS项目时使用的工程结构.首先要说的是,这只是我的工程结构, ...

  6. Asp.net MVC 使用PagedList(新的已更名 为X.PagedList.Mvc) 分页

    在asp.net mvc 中,可以bootstrap来作为界面,自己来写分页程序.也可以使用PagedList(作者已更名为 X.PagedList.Mvc)来分页. 1.首先,在NuGet程序包管理 ...

  7. 用grep在子目录中指定的文件类型中查找(转载)

    转自:http://www.ai7.org/wp/html/653.html grep -r abcd *.py 这样的命令得不到你期待的结果,而 grep -r abcd * 这样得到的结果又太多, ...

  8. bzoj 2067: [Poi2004]SZN【贪心+二分+树形dp】

    第一问就是Σ(deg[u]-1)/2+1 第二问是二分,判断的时候考虑第一问的贪心规则,对于奇度数的点,两两配对之后一条延伸到上面:对于欧度数的点,两两配对或者deg[u]-2的点配对,然后一条断在这 ...

  9. IT兄弟连 JavaWeb教程 Servlet

    Servlet的定义 Java Servlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层. 使用Ser ...

  10. Photoshop下载

    Adobe Photoshop,简称“PS”,是由Adobe Systems开发和发行的图像处理软件.Photoshop主要处理以像素所构成的数字图像.使用其众多的编修与绘图工具,可以有效地进行图片编 ...