poj2112Optimal Milking(二分+最大流)
floyd求出牛到机器的最短距离,二分距离,小于当前距离的边容量设为1,求出满容量下的最短距离。
EK算法
- #include <iostream>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #include<stdlib.h>
- #include<vector>
- #include<cmath>
- #include<queue>
- #include<set>
- using namespace std;
- #define N 255
- #define LL long long
- #define INF 0xfffffff
- const double eps = 1e-;
- const double pi = acos(-1.0);
- const double inf = ~0u>>;
- int path[N],flow[N],gh[N][N],st,en;
- int w[N][N];
- int bfs()
- {
- int i;
- memset(path,-,sizeof(path));
- for(i = ; i <= en ; i++)
- flow[i] = INF;
- queue<int>q;
- q.push();
- while(!q.empty())
- {
- int tk = q.front();
- q.pop();
- if(tk==en)
- break;
- for(i = ; i <= en ; i++)
- {
- if(path[i]==-&&gh[tk][i])
- {
- path[i] = tk;
- flow[i] = min(flow[tk],gh[tk][i]);
- q.push(i);
- }
- }
- }
- if(path[en]==-)
- return -;
- return flow[en];
- }
- int EK()
- {
- int now,pre,sum=,k;
- while((k=bfs())!=-)
- {
- sum+=k;
- now = en;
- while(now!=st)
- {
- pre = path[now];
- gh[pre][now]-=k;
- gh[now][pre]+=k;
- now = pre;
- }
- }
- return sum;
- }
- int main()
- {
- int k,c,i,g,j,m;
- while(scanf("%d%d%d",&k,&c,&m)!=EOF)
- {
- int n = k+c;
- for(i = ; i <= n+; i++)
- for(j = ;j <= n+ ; j++)
- w[i][j] = INF;
- for(i = ;i <= n+ ; i++)
- for(j = ; j <= n+ ; j++)
- {
- scanf("%d",&w[i][j]);
- if(w[i][j]==) w[i][j] = INF;
- if(i==j) w[i][i] = ;
- w[j][i] = w[i][j];
- }
- for(i = ; i <= n+; i++)
- for(j = ; j <= n+ ;j++)
- for(g = ;g <= n+; g++)
- w[j][g] = min(w[j][g],w[j][i]+w[i][g]);
- st = ;
- en = n+;
- int low = ,high = ,mid;
- while(low<=high)
- {
- mid = (low+high)>>;
- memset(gh,,sizeof(gh));
- for(i = ; i <= k+ ; i++)
- gh[i][en] = m;
- for(i = k+; i <= n+; i++)
- gh[st][i] = ;
- for(i = k+; i <= n+; i++)
- for(j = ; j <= k+ ; j++)
- if(w[i][j]<=mid)
- gh[i][j] = w[i][j];
- //cout<<EK()<<endl;
- if(EK()==c)
- high = mid-;
- else
- low =mid+;
- }
- cout<<low<<endl;
- }
- return ;
- }
poj2112Optimal Milking(二分+最大流)的更多相关文章
- POJ 2112 Optimal Milking (二分 + 最大流)
题目大意: 在一个农场里面,有k个挤奶机,编号分别是 1..k,有c头奶牛,编号分别是k+1 .. k+c,每个挤奶机一天最让可以挤m头奶牛的奶,奶牛和挤奶机之间用邻接矩阵给出距离.求让所有奶牛都挤到 ...
- TZOJ 1594 Optimal Milking(二分+最大流)
描述 FJ has moved his K (1 <= K <= 30) milking machines out into the cow pastures among the C (1 ...
- uvalive 3231 Fair Share 公平分配问题 二分+最大流 右边最多流量的结点流量尽量少。
/** 题目: uvalive 3231 Fair Share 公平分配问题 链接:https://vjudge.net/problem/UVALive-3231 题意:有m个任务,n个处理器,每个任 ...
- poj 2391 Ombrophobic Bovines 最短路 二分 最大流 拆点
题目链接 题意 有\(n\)个牛棚,每个牛棚初始有\(a_i\)头牛,最后能容纳\(b_i\)头牛.有\(m\)条道路,边权为走这段路所需花费的时间.问最少需要多少时间能让所有的牛都有牛棚可待? 思路 ...
- HDU3081 Marriage Match II —— 传递闭包 + 二分图最大匹配 or 传递闭包 + 二分 + 最大流
题目链接:https://vjudge.net/problem/HDU-3081 Marriage Match II Time Limit: 2000/1000 MS (Java/Others) ...
- HDU-3081-Marriage Match II 二分图匹配+并查集 OR 二分+最大流
二分+最大流: 1 //题目大意:有编号为1~n的女生和1~n的男生配对 2 // 3 //首先输入m组,a,b表示编号为a的女生没有和编号为b的男生吵过架 4 // 5 //然后输入f组,c,d表示 ...
- hdu4560 不错的建图,二分最大流
题意: 我是歌手 Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Subm ...
- POJ3228二分最大流
题意: 有n个点,每个点有两个权值,金子数量还有仓库容量,金子可以存在自己的仓库里或者是别的仓库里,仓库和仓库之间有距离,问所有金子都必须存到库里最大距离的最小是多少? 思路: ...
- POJ2112_Optimal Milking(网洛流最大流Dinic+最短路Flody+二分)
解题报告 农场有k个挤奶机和c头牛,每头牛到每一台挤奶机距离不一样,每台挤奶机每天最多挤m头牛的奶. 寻找一个方案,安排每头牛到某一挤奶机挤奶,使得c头牛须要走的全部路程中的最大路程的最小值. 要使每 ...
随机推荐
- CSS3 Selector
每个前端工程师可能每天都会写一些css,其中选择器是很主要的一部分.但是,大家可能每天写的大多是#id,.class这样的选择器,这并不稀奇,但是如果我们了解并且熟用css3为我们提供的强大并且优雅的 ...
- what's WSDL
WSDL (Web Services Description Language,Web服务描述语言) 它是一种XML Application,他将Web服务描述定义为一组服务访问点,客户端可以通过这些 ...
- SWT.Shell
import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class SWT_Shell ...
- Hive两种访问方式:HiveServer2 和 Hive Client
老版HiveClient: 要求比较多,需要Hive和Hadoop的jar包,各配置环境. HiveServer2: 使得与YARN和HDFS的连接从Client中独立出来, ...
- vim使用手册出现 找到 tag:1/9或更多 查看别的定义的方法
:ts 或 tselect 查看有相同地方的定义 通过这种方式会出现一个列表,输入:q 然后通过数字键和回车查看某一个定义,个人经常用:ts :tn或tnext 查找下一个定义地方. :tp 查找上一 ...
- bfs 邻接表
#include<stdio.h> #include<stdlib.h> #include<string.h> struct node { int date; st ...
- Centos6.8更好yum源
第一步:备份你的原镜像文件,以免出错后可以恢复. mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.back ...
- java scoket客户端服务端发送消息
客户端 public class User { public static void main(String[] args) { while (true) { try { Socket socket ...
- Oracle:ORA-01790: expression must have same datatype as corresponding expression
今天有现场报sql错误,错误sql语句 类似 select * from tableA where (exists 条件A or exists 条件B), 单独执行 select * f ...
- 修改fuse库成功
使用的是fuse-2.9.2 在lib目录下的helper.c的fuse_main_real函数里打印一句话,然后将fuse库编译并install. 对ssfs进行编译,运行后,出现了打印的那句话! ...