[BZOJ1070][SCOI2007]修车 费用流
1070: [SCOI2007]修车
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 6209 Solved: 2641
[Submit][Status][Discuss]
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)
我们先将所有m拆成n个点,每个点表示m倒数第i个维修的车。
对于每一辆车,我们向所有m拆的点连边,容量为1,费用为cost[i][j]*i表示他花的时间和后i个人等待的时间和。
跑最小费用最大流。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#define maxn 700
using namespace std;
int n,m;
int a[][];
int t;
bool vis[maxn];
int dis[maxn];
struct data {
int to,next,c,w;
}e[maxn*maxn];
int head[maxn],cnt;
int q[maxn];
void add(int u,int v,int w,int c){e[cnt].next=head[u];e[cnt].to=v;e[cnt].c=c;e[cnt].w=w;head[u]=cnt++;}
int use=;
bool spfa() {
for(int i=;i<=t;i++) dis[i]=-;
memset(vis,,sizeof(vis));
int h=,tail=;
q[]=t;
dis[t]=;
vis[t]=;
while(h!=tail) {
int now=q[h++];if(h==maxn) h=;
for(int i=head[now];i>=;i=e[i].next) {
int to=e[i].to;
if(e[i^].w>&&dis[to]<dis[now]+e[i].c) {
dis[to]=dis[now]+e[i].c;
if(!vis[to]){
vis[to]=;
q[tail++]=to;if(tail==maxn) tail=;
}
}
}
vis[now]=;
}
use-=dis[];
return dis[]!=-;
}
int ans=;
int dfs(int now,int af) {
if(now==t||af==){ans+=use*af;return af;}
vis[now]=;
int flow=,f=;
for(int i=head[now];i>=;i=e[i].next) {
int to=e[i].to;
if(vis[to]) continue;
if(dis[to]==dis[now]+e[i].c&&e[i].w>&&(f=dfs(to,min(af,e[i].w)))) {
e[i].w-=f;
e[i^].w+=f;
flow+=f;
af-=f;
if(!af) break;
}
}
return flow;
}
void zkw() {
while(spfa()) {
do {
memset(vis,,sizeof(vis));
}while(dfs(,));
memset(vis,,sizeof(vis));
use=;
}
}
int main() {
memset(head,-,sizeof(head));
scanf("%d%d",&m,&n);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++) scanf("%d",&a[i][j]);
for(int i=;i<=n;i++) {add(,i,,);add(i,,,);}
t=;
for(int i=n+;i<=n+n*m;i++) {add(i,t,,);add(t,i,,);}
for(int i=;i<=n;i++) {
for(int j=n+;j<=n+n*m;j++){
int cost=j-n;
int temp=cost/n+;
cost%=n;
if(!cost) cost=n,temp--;
add(i,j,,a[i][temp]*cost);
add(j,i,,-a[i][temp]*cost);
}
}
zkw();
double ans1;
ans1=(double)ans/(double)n;
printf("%.2lf",ans1);
}
[BZOJ1070][SCOI2007]修车 费用流的更多相关文章
- [bzoj1070][SCOI2007]修车——费用流
题目大意: 传送门 题解: 本题和(POJ3686)[http://poj.org/problem?id=3686]一题一模一样,而且还是数据缩小以后的弱化版QAQ,<挑战程序设计竞赛>一 ...
- [BZOJ1070] [SCOI2007] 修车 (费用流 & 动态加边)
Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使 ...
- 【BZOJ1070】[SCOI2007]修车 费用流
[BZOJ1070][SCOI2007]修车 Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的. ...
- bzoj 1070: [SCOI2007]修车 费用流
1070: [SCOI2007]修车 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2785 Solved: 1110[Submit][Status] ...
- P2053 [SCOI2007]修车 费用流
$ \color{#0066ff}{ 题目描述 }$ 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M ...
- 【BZOJ 1070】[SCOI2007]修车 费用流
就是拆个点限制一下(两点一排一大片),这道题让我注意到了限制这个重要的词.我们跑网络流跑出来的图都是有一定意义的,一般这个意义就对应了问题的一种方案,一般情况下跑一个不知道对不对的方案是相对容易的我们 ...
- [SCOI2007]修车 费用流
---题面--- 题解: 因为我们并不需要知道准确方案,而人数固定,要使得平均等待时间最小,也就是要使得总的等待时间最小. 因此我们将工人按每个时刻拆点,拆完之后向车子连边,流量为1,费用为k * 维 ...
- [SCOI2007]修车 费用流 BZOJ 1070
题目描述 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使得顾客平均等待 ...
- BZOJ.1070.[SCOI2007]修车(费用流SPFA)
题目链接 /* 神tm看错题*2.. 假如人员i依次维修W1,W2,...,Wn,那么花费的时间是 W1 + W1+W2 + W1+W2+W3... = W1*n + W2*(n-1) + ... + ...
随机推荐
- vue计算属性和观察者
1. 计算属性 模板内的表达式非常便利,但在模板中放入太多的逻辑会让模板过重且难以维护,所有就有了计算属性 例子: //html代码 <div id="example"> ...
- 《Cracking the Coding Interview》——第9章:递归和动态规划——题目9
2014-03-20 04:08 题目:八皇后问题. 解法:DFS解决. 代码: // 9.9 Eight-Queen Problem, need I say more? #include <c ...
- 程序员必备PC维修法(硬件篇)
自检自修不是万能,但不会自检自修却万万不能.程序员修电脑还是有必要的. 情景:通电情况下,电脑主机无法启动,所有主机内部硬件无反应. 原因:1.CPU.主板.电源积尘.(出现率30%) 2.CPU.主 ...
- MySQL高可用之MHA安装
Preface MasterHA is a tool which can be used in MySQL HA architecture.I'm gonna implement it ...
- pytest 运行指定用例
pytest运行指定用例 随着软件功能的增加,模块越来越多,也意味用例越来越多,为了节约执行时间,快速得到测试报告与结果,在工作中可以通过运行指定用例,达到快速执行用例 例子目录 spec_sub1_ ...
- kubeadm部署k8s1.9高可用集群--4部署master节点
部署master节点 kubernetes master 节点包含的组件: kube-apiserver kube-scheduler kube-controller-manager 本文档介绍部署一 ...
- iPhone:iOS界面,本地生成随机验证码
本文博客,模仿杰瑞教育的一篇博文,并在它的基础上,进行了些许更改.同时在重写的过程中,对自己忽略的地方,进行了重新认识,受益匪浅.文章来源:http://www.cnblogs.com/jerehed ...
- intellij idea 2017 工具使用问题
1.打开idea 打开maven项目报错:Unable to import maven project 2.在idea中Help->Show Log in Explorer->idea.l ...
- axis2实践(二)Restful入门示例
1. 实例说明 本示例直接参照了RESTful Web Services with Apache Axis2,本示例基本就是沿用的原示例,就是一个对学生信息(包括姓名,年龄,课程)的管理的例子,提供如 ...
- 旅行规划(travel)
题目描述 OIVillage 是一个风景秀美的乡村,为了更好的利用当地的旅游资源,吸引游客,推动经济发展,xkszltl 决定修建了一条铁路将当地 nnn 个最著名的经典连接起来,让游客可以通过火车从 ...