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

HINT

数据范围: (2<=M<=9,1<=N<=60), (1<=T<=1000)

 
把技术人员拆成N个点,每个点f[i,j] 表示技术人员倒数修的倒数第J辆车,费用为原修车费用*j,跑最小费用流
(原因是倒数第j辆车所花费的时间只对后面的j辆车产生影响,对于每一辆车的贡献均为w,所以要*j)
 #include<cstdio>
#include<cstring>
using namespace std;
const int N=,inf=;
struct ee{int to,next,f,w;}e[N*];
int S,T,cnt=,n,k,ans,f,v,w,m;
int head[N],dis[N],pre[N],q[N];
bool inq[N];
void ins(int u,int v,int f,int w){
e[++cnt].to=v,e[cnt].next=head[u],e[cnt].f=f,e[cnt].w=w,head[u]=cnt;
e[++cnt].to=u,e[cnt].next=head[v],e[cnt].f=,e[cnt].w=-w,head[v]=cnt;
} bool spfa(){
for (int i=;i<=T;i++) dis[i]=inf;
int h=,t=;
q[t]=S;dis[S]=;inq[S]=;
while (h!=t){
int now=q[++h];if(h==T) h=;
for (int i=head[now];i;i=e[i].next){
int v=e[i].to;
if (dis[v]>dis[now]+e[i].w&&e[i].f){
dis[v]=dis[now]+e[i].w;
pre[v]=i;
if (!inq[v]){
q[++t]=v;if (t==T) t=;
inq[v]=;
}
}
}
inq[now]=;
}
if (dis[T]==inf) return ;
return ;
} void updata(){
int tmp=T;
while (tmp!=S){
int l=pre[tmp],v=e[l].to;
e[l].f-=;e[l^].f+=;
tmp=e[l^].to;
}
ans+=dis[T];
} int main(){
scanf("%d%d",&m,&n);
S=,T=m*n+n+;
for (int i=;i<=n;i++) ins(S,i,,);
for (int i=;i<=m*n;i++) ins(i+n,T,,);
for (int i=;i<=n;i++)//这里是车
for (int j=;j<=m;j++){//这里是人
scanf("%d",&w);
for(int k=;k<=n;k++){
int u=(j-)*n+k+n;
ins(i,u,,w*k);
}
}
while (spfa()) updata();
printf("%.2lf",(ans+0.0)/n);
}

【BZOJ 1070】[SCOI2007]修车的更多相关文章

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

    1070: [SCOI2007]修车 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 4936  Solved: 2032[Submit][Status] ...

  2. bzoj 1070: [SCOI2007]修车 费用流

    1070: [SCOI2007]修车 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2785  Solved: 1110[Submit][Status] ...

  3. bzoj 1070 [SCOI2007]修车(最小费用最大流)

    1070: [SCOI2007]修车 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3515  Solved: 1411[Submit][Status] ...

  4. [BZOJ 1070] [SCOI2007] 修车 【费用流】

    题目链接:BZOJ - 1070 题目分析 首先想到拆点,把每个技术人员拆成 n 个点,从某个技术人员拆出的第 i 个点,向某辆车连边,表示这是这个技术人员修的倒数第 i 辆车.那么这一次修车对整个答 ...

  5. BZOJ 1070: [SCOI2007]修车(费用流)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1070 题意: 思路: 神奇的构图. 因为排在后面的人需要等待前面的车修好,这里将每个技术人员拆成n个 ...

  6. bzoj 1070 [SCOI2007]修车——网络流(拆边)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1070 后面还有几辆车在这个人这儿修,自己这辆车的时间对总时间的贡献就要多乘上几倍. 所以可以 ...

  7. bzoj 1070 [SCOI2007]修车

    最小费用最大流. 将每个技术人员拆成车数个点,技术人员i的第j个点代表技术人员i修的倒数第j辆车. 源点向所有技术人员点连一条容量为1费用为0的边. 所有技术人员点向所有车点连边:技术人员i的第j个点 ...

  8. BZOJ.1070.[SCOI2007]修车(费用流SPFA)

    题目链接 /* 神tm看错题*2.. 假如人员i依次维修W1,W2,...,Wn,那么花费的时间是 W1 + W1+W2 + W1+W2+W3... = W1*n + W2*(n-1) + ... + ...

  9. 【刷题】BZOJ 1070 [SCOI2007]修车

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

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

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

随机推荐

  1. Java动态加载jar及class文件

    经常碰到需要动态加载jar及class文件的场景.Java类由于需要加载和编译字节码,动态加载class文件较为麻烦,但JDK仍提供了一整套方法来动态加载jar文件和class文件. 一.动态加载ja ...

  2. hdu 4628 动态规划

    思路:首先就是状态压缩,然后判断哪些状态是回文串.最后就是动态方程:dp[i]=min(dp[i],dp[j]+1).这个方程得前提条件是状态(j-i)为回文串. #include<iostre ...

  3. 单击改变input的边框颜色

    input边框变色   今天布局页面的时候发现设计稿多了一项要求,就是点击input框的时候要求框框变色,以前没有遇到过,平时很多时候都用的:hover这次想着一样吧,看了之后发现不是想要的效果,ho ...

  4. 也说border-box盒模型

    border-box是css3的一个新属性,使用这个属性,和以往的content-box比起来,会有诸多便利之处,bootstrap3也使用的是这个border-box,甚至很多人认为,border- ...

  5. Java Concurrency - 浅析 Phaser 的用法

    One of the most complex and powerful functionalities offered by the Java concurrency API is the abil ...

  6. Linux 命令 - wget: 非交互式网络下载器

    命令格式 wget [option]... [URL]... 命令参数 启动选项 -V, --version 打印版本信息 -h, --help 打印帮助信息 日志和输入文件选项 -o logfile ...

  7. Java Mail发送简单邮件,完整代码

    依赖javax.mail.jar,地址:https://java.net/projects/javamail/pages/Home 完整示例代码如下: package com.jadic.utils; ...

  8. wampserver安装后 mysql 所有数据库丢失的解决方案

    事情起源: 晚上十点客户紧急来电,说是网站全部瘫痪.同事登陆数据库一看,Mysql Workbench Database下一片空白.当时我们都傻了. 发现原因: 服务器环境是windows serve ...

  9. 有道单词本添加js实现自动阅读单词

    个人比较习惯使用有道,使用了一段时间,背单词的时候很不方便   而有道单词客户Duan没有自动阅读的功能,  本菜用强大的js实现了简单的自动下一个单词的功能, 方法:第一步打开有道路径下的" ...

  10. Java知识思维导图

    注:图片来源于网络,谢谢分享. 1 开发环境Java SDK 下载和安装2 环境变量的配置(path和classpath)3 编程基础 标识符命名规范4 Java数据类型5 运算符6 分支语句(if, ...