poj 2112 最优挤奶方案
| Time Limit: 2000MS | Memory Limit: 30000K | |
| Total Submissions: 16550 | Accepted: 5945 | |
| Case Time Limit: 1000MS | ||
Description
Each milking point can "process" at most M (1 <= M <= 15) cows each day.
Write a program to find an assignment for each cow to some milking machine so that the distance the furthest-walking cow travels is minimized (and, of course, the milking machines are not overutilized). At least one legal assignment is possible for all input data sets. Cows can traverse several paths on the way to their milking machine.
Input
* Lines 2.. ...: Each of these K+C lines of K+C space-separated integers describes the distances between pairs of various entities. The input forms a symmetric matrix. Line 2 tells the distances from milking machine 1 to each of the other entities; line 3 tells the distances from machine 2 to each of the other entities, and so on. Distances of entities directly connected by a path are positive integers no larger than 200. Entities not directly connected by a path have a distance of 0. The distance from an entity to itself (i.e., all numbers on the diagonal) is also given as 0. To keep the input lines of reasonable length, when K+C > 15, a row is broken into successive lines of 15 numbers and a potentially shorter line to finish up a row. Each new row begins on its own line.
Output
Sample Input
2 3 2
0 3 2 1 1
3 0 3 2 0
2 3 0 1 0
1 2 1 0 2
1 0 0 2 0
Sample Output
2
Source
Main.cpp
xlocale(1242) : fatal error C1088: Cannot flush compiler intermediate file: '_CL_75c8ace5ex': No space left on device
”磁盘空间不足,但是就懵了,尝试了N次才发现,我的智商啊!!!!
1 Source Code
2 #include<cstdio>
3 #include<iostream>
4 #include<cstring>
5 #include<vector>
6 #include<queue>
7
8 using namespace std;
9 int k,c,m,ans;
10 int map[240][240];
11 int tu[240][240];
12 int lays[240];
13 int vis[240];
14 void floyd()
15 {
16 for(int kk=1;kk<=k+c;kk++)
17 for(int i=1;i<=k+c;i++)
18 for(int j=1;j<=k+c;j++)
19 if(map[i][kk]+map[kk][j]<map[i][j])
20 map[i][j]=map[i][kk]+map[kk][j];
21 }
22 void mideg(int mid)
23 {
24 memset(tu,0,sizeof(tu));
25 for(int i=1;i<=k;i++)
26 {
27 tu[0][i]=m;
28 map[0][i]=1;
29 }
30 for(int i=1;i<=k;i++)
31 {
32 for(int j=k+1;j<=k+c;j++)
33 if(map[i][j]<=mid)
34 tu[i][j]=1;
35 }
36 for(int i=k+1;i<=k+c;i++)
37 {
38 tu[i][k+c+1]=1;
39 map[i][k+c+1]=1;
40 }
41 }
42 bool bfs()
43 {
44 memset(lays,-1,sizeof(lays));
45 queue<int>q;
46 q.push(0);
47 lays[0]=0;
48 while(!q.empty())
49 {
50 int u=q.front();
51 q.pop();
52 for(int i=0;i<=k+c+1;i++)
53 {
54 if(tu[u][i]>0&&lays[i]==-1)
55 {
56 lays[i]=lays[u]+1;
57 if(i==k+c+1)return 1;
58 else q.push(i);
59 }
60 }
61 }
62 return 0;
63 }
64 bool dinic()
65 {
66 int maxf=0;
67 vector<int>q;
68 while(bfs())
69 {
70 memset(vis,0,sizeof(vis));
71 q.push_back(0);
72 vis[0]=1;
73 while(!q.empty())
74 {
75 int nd=q.back();
76 if(nd==k+c+1)
77 {
78 int minn,minx=0x7fffffff;
79 for(int i=1;i<q.size();i++)
80 {
81 int u=q[i-1],v=q[i];
82 if(minx>tu[u][v])
83 {
84 minx=tu[u][v];
85 minn=u;
86 }
87 }
88 maxf+=minx;
89 for(int i=1;i<q.size();i++)
90 {
91 int u=q[i-1],v=q[i];
92 tu[u][v]-=minx;
93 tu[v][u]+=minx;
94 }
95 while(!q.empty()&&q.back()!=minn)
96 {
97 vis[q.back()]=0;
98 q.pop_back();
99 }
100 }
101 else
102 {
103 int i;
104 for(i=0;i<=k+c+1;i++)
105 {
106 if(tu[nd][i]>0&&!vis[i]&&lays[i]==lays[nd]+1)
107 {
108 q.push_back(i);
109 vis[i]=1;
110 break;
111 }
112 }
113 if(i>k+c+1)q.pop_back();
114 }
115 }
116 }
117 return maxf==c;
118 }
119 int main()
120 {
121
122 cin>>k>>c>>m;
123 memset(map,0x3f,sizeof(map));
124 for(int i=1;i<=k+c;i++)
125 for(int j=1;j<=k+c;j++)
126 {
127 int a;
128 scanf("%d",&a);
129 if(a)map[i][j]=a;
130 if(i==j)map[i][j]=0;
131 }
132
133 floyd();
134
135 int l=0,r=50000;
136 while(l<=r)
137 {
138 int mid=(l+r)/2;
139 mideg(mid);
140 bool pd=dinic();
141 if(pd)
142 {
143 ans=mid;
144 r=mid-1;
145 }
146 else
147 l=mid+1;
148 }
149 cout<<ans<<endl;
150 return 0;
151 }
poj 2112 最优挤奶方案的更多相关文章
- 题解 最优的挤奶方案(Optimal Milking)
最优的挤奶方案(Optimal Milking) 时间限制: 1 Sec 内存限制: 128 MB 题目描述 农场主 John 将他的 K(1≤K≤30)个挤奶器运到牧场,在那里有 C(1≤C≤20 ...
- POJ 2112 Optimal Milking (二分 + floyd + 网络流)
POJ 2112 Optimal Milking 链接:http://poj.org/problem?id=2112 题意:农场主John 将他的K(1≤K≤30)个挤奶器运到牧场,在那里有C(1≤C ...
- POJ 2112—— Optimal Milking——————【多重匹配、二分枚举答案、floyd预处理】
Optimal Milking Time Limit:2000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64u Sub ...
- Poj 2112 Optimal Milking (多重匹配+传递闭包+二分)
题目链接: Poj 2112 Optimal Milking 题目描述: 有k个挤奶机,c头牛,每台挤奶机每天最多可以给m头奶牛挤奶.挤奶机编号从1到k,奶牛编号从k+1到k+c,给出(k+c)*(k ...
- POJ 2112 Optimal Milking (二分 + 最大流)
题目大意: 在一个农场里面,有k个挤奶机,编号分别是 1..k,有c头奶牛,编号分别是k+1 .. k+c,每个挤奶机一天最让可以挤m头奶牛的奶,奶牛和挤奶机之间用邻接矩阵给出距离.求让所有奶牛都挤到 ...
- POJ 2112 Optimal Milking (二分+最短路径+网络流)
POJ 2112 Optimal Milking (二分+最短路径+网络流) Optimal Milking Time Limit: 2000MS Memory Limit: 30000K To ...
- P3097 [USACO13DEC]最优挤奶Optimal Milking
P3097 [USACO13DEC]最优挤奶Optimal Milking 题意简述:给定n个点排成一排,每个点有一个点权,多次改变某个点的点权并将最大点独立集计入答案,输出最终的答案 感谢@zht4 ...
- 洛谷P3097 - [USACO13DEC]最优挤奶Optimal Milking
Portal Description 给出一个\(n(n\leq4\times10^4)\)个数的数列\(\{a_n\}(a_i\geq1)\).一个数列的最大贡献定义为其中若干个不相邻的数的和的最大 ...
- Optimal Milking POJ - 2112 (多重最优匹配+最小费用最大流+最大值最小化 + Floyd)
Optimal Milking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 19347 Accepted: 690 ...
随机推荐
- vue3系列:vue3.0自定义弹框组件V3Popup|vue3.x手机端弹框组件
基于Vue3.0开发的轻量级手机端弹框组件V3Popup. 之前有分享一个vue2.x移动端弹框组件,今天给大家带来的是Vue3实现自定义弹框组件. V3Popup 基于vue3.x实现的移动端弹出框 ...
- 1.简单使用两片74HC595实现动态显示数码管
本篇文章主要是讲解如何简单示用74HC595,更具体的讲解请移步 https://www.cnblogs.com/lulipro/p/5067835.html#undefined 这篇文章讲解的更加详 ...
- 解决npm ERR!
一:[Unexpected end of JSON input while parsing near]报错 最近的vue项目中在执行 npm install 时会报错误: npm ERR! Unexp ...
- 阿里技术专家详解 Dubbo 实践,演进及未来规划
Dubbo 整体介绍 Dubbo 是一款高性能,轻量级的 Java RPC 框架.虽然它是以 Java 语言来出名的,但是现在我们生态里面已经有 Go.Python.PHP.Node.JS 等等语言. ...
- spring boot maven profiles,打包不同的配置文件
1. 在pom.xml添加 <profiles> <profile> <id>dev</id> <properties> <envir ...
- vs code编写java
不知不觉中vs code变得非常强大了,今天小编就分享一下vs code编写java语言.其实除了java语言,还支持很多语言. 首先看下vs code欢迎页面支持哪些语言: 好家伙,支持的东西还真不 ...
- 我的程序员之路:自学Java篇
序章 时光疾驰,从事IT行业已两年有余. 16年11月开始自学Java,从此开启自学之路,后来实习期自学大数据.python.爬虫等,最终成长为一名平凡的程序员.回首望去,一路上的过往历历在目,有初学 ...
- Maven 中 install,package,deploy命令区别
mvn clean package依次执行了clean.resources.compile.testResources.testCompile.test.jar(打包)等7个命令. mvn clean ...
- dubbo配置启动时检查
启动检查设置 Dubbo缺省会在启动时检查依赖的服务是否可用,不可用会抛出异常,阻止Spring初始化完成,默认check="true":是开启检查. 比如测试的时候,有些服务并不 ...
- [翻译]Azure 网关迁移至 .NET Core 3.1 性能提升一倍
原文:[Azure Active Directory's gateway is on .NET Core 3.1!] Azure Active Directory 的网关服务是一个反向代理,它为构成 ...