bzoj1070————2016——3——14
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1070;
题目概括:
Description
同一时刻有N位车主带着他们的爱车来到了汽车维修中心。维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的。现在需要安排这M位技术人员所维修的车及顺序,使得顾客平均等待的时间最小。 说明:顾客的等待时间是指从他把车送至维修中心到维修完毕所用的时间。
Input
第一行有两个m,n,表示技术人员数与顾客数。 接下来n行,每行m个整数。第i+1行第j个数表示第j位技术人员维修第i辆车需要用的时间T。
Output
最小平均等待时间,答案精确到小数点后2位。
Sample Input
3 2
1 4
Sample Output
HINT
数据范围: (2<=M<=9,1<=N<=60), (1<=T<=1000)
Source
看到这个大概就应该知道是费用流了吧,可是怎么处理一个人等其他人的时间呢? 显然拆点撒,拆T组点,每个人向第j的机器的第z个修的点连一条边,权植为z*time[i][j](为什么是这个呢?
因为你在修的时候别人和你都在等待),所以这道题就这样写完了,但感觉点有点多,所以就写了个(zkw费用流)但是是抄模板的。。。。。醉(好歹有点理解也是好的);
普通费用流也可以过,只不过要小心点.........
#include<iostream>
#include<cstring>
#include<cstdio>
#define inf 0x7fffffff
#define maxn 500000
int n,m,tot,s,t,ans;
int pre[maxn],v[maxn],cap[maxn],dis[maxn],sla[maxn],now[maxn],cost[maxn];
int a[][];
bool vis[maxn];
using namespace std;
int num(int i,int j)
{
return (i*n+j);
}
void ins(int a,int b, int c, int d)
{
tot++; pre[tot]=now[a]; now[a]=tot; v[tot]=b; cap[tot]=c; cost[tot]=d;
}
void insert(int a, int b, int c, int d)
{
ins(a,b,c,d); ins (b,a,,-d);
}
int kk(int x, int f)
{
int left=f;
if (x==t) {ans+=f*dis[s]; return f;
}
vis[x]=;
for (int i=now[x]; i; i=pre[i])
{
if (cap[i]> && !vis[v[i]])
{
if (dis[v[i]]+cost[i]-dis[x]==)
{
int delt=kk(v[i],min(cap[i],left));
if (delt>) cap[i]-=delt,cap[i^]+=delt,left-=delt;
if (left==) return f; }
else
sla[v[i]]=min(sla[v[i]],dis[v[i]]+cost[i]-dis[x]);
}
}
return (f-left);
}
bool dfs()
{
int delt=inf;
for (int i=s; i<=t; i++)
if (!vis[i]) delt=min(delt,sla[i]),sla[i]=inf;
if (delt==inf ) return true;
for (int i=s; i<=t; i++)
if (vis[i]) dis[i]+=delt;
return false;
}
void zkw()
{
for (int i=s; i<=t; i++) dis[i]=,sla[i]=inf;
do{
do {memset(vis,,sizeof(vis));
} while(kk(s,inf)); }while (!dfs());
}
int main()
{
scanf("%d%d",&m,&n);
for (int i=; i <=n; i++) for (int j=; j<=m; j++) scanf("%d",&a[i][j]);
tot=;
s=; t=n*m+n+;
for (int i=; i<=n; i++) insert(s,i,,);
for (int i=; i<=n; i++)
for (int j=; j<=m; j++)
for (int z=; z<=n; z++)
{
insert(i,num(j,z),,z*a[i][j]);
}
for (int i=; i<=m; i++)
for (int j=; j<=n; j++)
insert(num(i,j),t,,);
zkw();
printf("%.2lf\n",(1.0*ans)/(1.0*n));
}
bzoj1070————2016——3——14的更多相关文章
- 2016.09.14,英语,《Using English at Work》全书笔记
半个月时间,听完了ESLPod出品的<Using English at Work>,笔记和自己听的时候的备注列在下面.准备把每个语音里的快速阅读部分截取出来,放在手机里反复听. 下一阶段把 ...
- Murano Weekly Meeting 2016.06.14
Meeting time: 2016.June.14 1:00~2:00 Chairperson: Kirill Zaitsev, from Mirantis Meeting summary: 1. ...
- 2016.10.14,英语,《American Accent Training》
这本书是讲述美语发音训练的.已经看了一段时间了,决定向周叶学习,记录读书笔记.计划每天花半个小时,学习3节左右的音频(按照CD TRACK),并完成训练. CD1 Track1 What is Acc ...
- nginx学习记录/2016.11.14
nginx(engine X)是一个高性能的web服务器和反向代理服务器以及电子邮件代理服务器 由俄罗斯的程序设计师Igor Sysoev所开发 nginx+tomcat实现负载均衡 参考地址:htt ...
- 2016.11.14测试 长乐一中2014NOIP复赛模拟题 第一题。
1.正确答案 [题目描述] 小H与小Y刚刚参加完UOIP外卡组的初赛,就迫不及待的跑出考场对答案. "吔,我的答案和你都不一样!",小Y说道,"我们去找神犇们问答案吧&q ...
- 2016.8.14安装myplayer心得
安装mplayer时,我有两个os是not found状态,我在其他地方找到后 which mplayer,找到mplayer的配置界面,找到not found的部分,并且从usr/lib中找到相应的 ...
- 2016.9.14 JavaScript入门之七面向对象和函数
1.JavaScript中的变量,可以是对象,具有相应的属性: 2.我们也能够使用构造函数创建对象.构造函数的函数给出了一个大写的名称,以使它清楚地表明它是一个构造函数. 在构造函数中,这个变量是指由 ...
- 2016.8.14 HTML5重要标签以及属性学习
1.响应网格系统,这使得它很容易把元素放在行,并指定每个元素的相对宽度 . 要注意的是: 在使用网格布局系统之前,要不把布局的元素都添加到同一个<div>中,而且这个<div> ...
- 2016.8.14 HTML5重要标签及其属性学习
1.移动端的CSS: 一般需要引入下面的外部样式表: <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/ ...
随机推荐
- If only it could be all the same like we first me
为什么 你当时对我好 Why? You nice to me at that time. 又为什么 现在变得冷淡了 Why? Now you give a cold shoulder to me. 我 ...
- LDA,PCA阅读资料
1,线性判别分析(Linear Discriminant Analysis)(一) 2,机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA) 3,Machine Learning i ...
- Servlet程序开发--Servlet 与 表单
servlet程序: doPost方法时为了防止表单提交时post方式的问题.否则只能处理get请求 package org.lxh.servletdemo ; import java.io.* ; ...
- psy & vr
技术指标及应用法则:PSY和VR 一.PSY(Psychologial Line) 1. PSY的参数 2. PSY的应用法则 二.VR(Volume Ratio) 1. VR的参数 2. VR的 ...
- 常用的dos命名
注销:logoff 注册表:regedit 查看显存:dxdiag 删除文件: del +文件 删除文件夹: rd+(/s)+文件名 (/s表示删除文件下的子目录和文件); 系统配置实用程序: msc ...
- 连接Oracle数据库的Hibernate配置文件
连接Oracle数据库的Hibernate配置文件连接Oracle的Hibernate配置文件有两种格式,一种是xml格式的,另一种是Java属性文件格式的.下面分别给出这两种格式配置文件的代码. 1 ...
- Android利用canvas画各种图形 及Paint用法 .
引自:http://blog.csdn.net/carlfan/article/details/8139984 1.首先说一下canvas类: Class Overview The Canvas cl ...
- The Triangle 经典DP
题意:数塔问题 思路:1:递归.2:递推.3:记忆化搜索.<刘汝佳,第九章> #include<iostream> #include<cstdio> #includ ...
- Winform带dataGridview的Combox控件
调用控件: public partial class Form1 : Form { public Form1() { InitializeComponent(); //---------------- ...
- UI常用控件
UICommonlyUsedControls [UI常用控件] 不需要学习多么深入,但是要知道系统提供的有用的控件. 一.UISwitch(开关) 二.UIActivityIndicatorView( ...