链接

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(二分+最大流)的更多相关文章

  1. POJ 2112 Optimal Milking (二分 + 最大流)

    题目大意: 在一个农场里面,有k个挤奶机,编号分别是 1..k,有c头奶牛,编号分别是k+1 .. k+c,每个挤奶机一天最让可以挤m头奶牛的奶,奶牛和挤奶机之间用邻接矩阵给出距离.求让所有奶牛都挤到 ...

  2. TZOJ 1594 Optimal Milking(二分+最大流)

    描述 FJ has moved his K (1 <= K <= 30) milking machines out into the cow pastures among the C (1 ...

  3. uvalive 3231 Fair Share 公平分配问题 二分+最大流 右边最多流量的结点流量尽量少。

    /** 题目: uvalive 3231 Fair Share 公平分配问题 链接:https://vjudge.net/problem/UVALive-3231 题意:有m个任务,n个处理器,每个任 ...

  4. poj 2391 Ombrophobic Bovines 最短路 二分 最大流 拆点

    题目链接 题意 有\(n\)个牛棚,每个牛棚初始有\(a_i\)头牛,最后能容纳\(b_i\)头牛.有\(m\)条道路,边权为走这段路所需花费的时间.问最少需要多少时间能让所有的牛都有牛棚可待? 思路 ...

  5. HDU3081 Marriage Match II —— 传递闭包 + 二分图最大匹配 or 传递闭包 + 二分 + 最大流

    题目链接:https://vjudge.net/problem/HDU-3081 Marriage Match II Time Limit: 2000/1000 MS (Java/Others)    ...

  6. HDU-3081-Marriage Match II 二分图匹配+并查集 OR 二分+最大流

    二分+最大流: 1 //题目大意:有编号为1~n的女生和1~n的男生配对 2 // 3 //首先输入m组,a,b表示编号为a的女生没有和编号为b的男生吵过架 4 // 5 //然后输入f组,c,d表示 ...

  7. hdu4560 不错的建图,二分最大流

    题意: 我是歌手 Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Subm ...

  8. POJ3228二分最大流

    题意:       有n个点,每个点有两个权值,金子数量还有仓库容量,金子可以存在自己的仓库里或者是别的仓库里,仓库和仓库之间有距离,问所有金子都必须存到库里最大距离的最小是多少? 思路:       ...

  9. POJ2112_Optimal Milking(网洛流最大流Dinic+最短路Flody+二分)

    解题报告 农场有k个挤奶机和c头牛,每头牛到每一台挤奶机距离不一样,每台挤奶机每天最多挤m头牛的奶. 寻找一个方案,安排每头牛到某一挤奶机挤奶,使得c头牛须要走的全部路程中的最大路程的最小值. 要使每 ...

随机推荐

  1. 深入解析Hibernate核心接口

    Hibernate有很多值得学习的地方,这里我们主要介绍Hibernate核心接口,包括介绍SessionFactory接口.Query和Criteria接口等方面. Session 接口对于Hibe ...

  2. 20170228 Z_po_send_email

    FUNCTION zmm_po_send_email. function zmm_po_send_email. *"------------------------------------- ...

  3. UICollectionView基础用法

    初始化部分: UICollectionViewFlowLayout *flowLayout= [[UICollectionViewFlowLayout alloc]init]; self.myColl ...

  4. (linux)自旋锁及其衍生锁

      自旋锁 毫秒以下. 自旋锁用于多个CPU系统中,在单处理器系统中,自旋锁不起锁的作用,只是禁止或启用内核抢占.在自旋锁忙等待期间,内核抢占机制还是有效的,等待自旋锁释放的线程可能被更高优先级的线程 ...

  5. POJ3984 迷宫问题 —— BFS

    题目链接:http://poj.org/problem?id=3984 迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions ...

  6. 以太坊EVM1.0缺陷

    256位的虚拟机 目前主流的CPU是32位或64位,在这些机器上进行256位运算需要将256位分段成多个64位指令执行,执行效率比32/64位低,在存储上方面,保存一个数需要256位的存储空间,绝大多 ...

  7. Hadoop的jobhistoryserver配置

    配置mapred-site.xml <configuration> <property> <name>mapreduce.framework.name</na ...

  8. c++11实现DLL帮助类

    用过DLL的人都会发现,在C++中调用dll中的函数有点繁琐,调用过程如下:在加载dll后还要定义一个对应的函数指针类型,接着调用GetProcAddress获取函数地址,再转成函数指针,最后调用函数 ...

  9. 自定义custom Tab Bar

    iOS提供的Tab Bar比较简单,我们常常有些别样的需求,此时往往需要自行自定义Tab Bar,如下图所示:                           如图所示,需要在某个页面中添加一个类 ...

  10. [USACO 2016Dec] Team Building

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4742 [算法] 动态规划 用Fi,j,k表示约翰的前i头牛和保罗的前j头牛匹配 , ...