传送门

费用流经典题目。


自我感觉跟TheWindy′sThe Windy'sTheWindy′s很像。

利用费用提前计算的思想来建图就行了。

代码:

#include<bits/stdc++.h>
#define N 1005
#define M 100005
using namespace std;
inline int read(){
	int ans=0;
	char ch=getchar();
	while(!isdigit(ch))ch=getchar();
	while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
	return ans;
}
int n,m;
struct edge{int v,w,c,next;};
struct MCMF{
	edge e[M<<1];
	int first[N],cnt,d[N],flow[N],pred[N],pos[N],q[N],hd,tl,s,t;
	bool in[N];
	inline void init(){s=0,t=n*m+n+1,memset(first,-1,sizeof(first)),cnt=-1;}
	inline void addedge(int u,int v,int c,int w){e[++cnt].v=v,e[cnt].w=w,e[cnt].c=c,e[cnt].next=first[u],first[u]=cnt;}
	inline void add(int u,int v,int c,int w){addedge(u,v,c,w),addedge(v,u,0,-w);}
	inline bool spfa(){
		queue<int>q;
		for(int i=1;i<=t;++i)d[i]=0x3f3f3f3f;
		memset(in,false,sizeof(in)),d[s]=0,in[s]=1,pred[t]=-1,flow[s]=0x3f3f3f3f,q.push(s);
		while(!q.empty()){
			int x=q.front();
			q.pop(),in[x]=0;
			for(int i=first[x];~i;i=e[i].next){
				int v=e[i].v;
				if(!e[i].c||d[v]<=d[x]+e[i].w)continue;
				d[v]=d[x]+e[i].w,pred[v]=x,pos[v]=i,flow[v]=min(flow[x],e[i].c);
				if(!in[v])in[v]=1,q.push(v);
			}
		}
		return d[t]!=0x3f3f3f3f;
	}
	inline void solve(){
		int ans=0;
		for(int w=t;spfa();w=t){
			ans+=d[t];
			while(w!=s)e[pos[w]].c-=flow[t],e[pos[w]^1].c+=flow[t],w=pred[w];
		}
		printf("%.2lf",(double)((double)ans)/((double)n));
	}
}mcmf;
int main(){
	m=read(),n=read(),mcmf.init();
	for(int i=1;i<=n;++i)mcmf.add(mcmf.s,i+n*m,1,0);
	for(int i=1;i<=n*m;++i)mcmf.add(i,mcmf.t,1,0);
	for(int i=1,v;i<=n;++i){
		for(int j=1;j<=m;++j){
			v=read();
			for(int k=1;k<=n;++k)mcmf.add(i+n*m,(j-1)*n+k,1,v*k);
		}
	}
	mcmf.solve();
	return 0;
}

2018.10.13 bzoj1070: [SCOI2007]修车(费用流)的更多相关文章

  1. [BZOJ1070][SCOI2007]修车 费用流

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

  2. [bzoj1070][SCOI2007]修车——费用流

    题目大意: 传送门 题解: 本题和(POJ3686)[http://poj.org/problem?id=3686]一题一模一样,而且还是数据缩小以后的弱化版QAQ,<挑战程序设计竞赛>一 ...

  3. [BZOJ1070] [SCOI2007] 修车 (费用流 & 动态加边)

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

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

    [BZOJ1070][SCOI2007]修车 Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的. ...

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

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

  6. P2053 [SCOI2007]修车 费用流

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

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

    就是拆个点限制一下(两点一排一大片),这道题让我注意到了限制这个重要的词.我们跑网络流跑出来的图都是有一定意义的,一般这个意义就对应了问题的一种方案,一般情况下跑一个不知道对不对的方案是相对容易的我们 ...

  8. [SCOI2007]修车 费用流

    ---题面--- 题解: 因为我们并不需要知道准确方案,而人数固定,要使得平均等待时间最小,也就是要使得总的等待时间最小. 因此我们将工人按每个时刻拆点,拆完之后向车子连边,流量为1,费用为k * 维 ...

  9. [SCOI2007]修车 费用流 BZOJ 1070

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

随机推荐

  1. 自定义服务与调用--------factory

    自定义服务: angular.module('myApp').factory('UserService',['$http','$q',function ($http,$q) { // 定义一个方法工厂 ...

  2. 1.Spring AOP (上)

    转自:https://blog.csdn.net/yusheng8711/article/details/21622773 Spring有两大核心,IOC和AOP.IOC在java web项目中无时无 ...

  3. 5 python 内置类

    1.实例属性和类属性 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Chinese: def __init__(self,name,sex,age): self.name = ...

  4. python 3 属性查找与绑定方法

    1.属性查找 类有两种属性:数据属性和函数属性 (1)类的数据属性是所有对象共享的 #类的数据属性是所有对象共享的,id都一样 class OldboyStudent: school='oldboy' ...

  5. C#--数组、字符与字符串--StringBuilder类、字符与字符串、字符及转义字符

    C#--数组 字符与字符串--StringBuilder类 字符与字符串 字符及转义字符

  6. mysql的collation-字符集

    utf8_general_ci               :排序规则 utf8 -- UTF-8 Unicode     :字符集 一.通过my.cnf文件增加(一劳永逸)两个参数:1.在[mysq ...

  7. 书单BookList

    1. <代码大全> 史蒂夫·迈克康奈尔 (Code Complete) 2. <程序员修炼之道> Andrew Hunt [读过了,非常好的一本书] (Pragmatic Pr ...

  8. [ERR] Not all 16384 slots are covered by nodes.

    redis集群开不起来,用redis-cli连接的时候出现如下错误: CLUSTERDOWN The cluster is down 然后使用redis-trib.rb检查: ./redis-trib ...

  9. spark cache table

    http://www.07net01.com/2015/11/961118.html http://www.cnblogs.com/charlotte77/p/5468968.html 文本读入和写出 ...

  10. Windows驱动手动卸载与安装

    彻底卸载的流程 1.删除C:\windows\inf\oem.inf路径下的所有oem文件 2.删除c:\windows\system32\drivers路径下对应的sys文件 3.(重要) 第一步: ...