O - Steady Cow Assignment - POJ 3189(多重匹配+枚举)
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std; const int MAXN = ;
const int MAXM = ; int G[MAXN][MAXM], N, M;
int cows[MAXM];///牛棚最多可以安放的牛的数量
bool used[MAXM];
struct Link{int link[MAXN], len;}Ly[MAXM]; bool Find(int i, int L, int R)
{
for(int j=; j<=M; j++)
{
if( G[i][j]>=L && G[i][j]<=R && !used[j] )
{
used[j] = true; if( Ly[j].len < cows[j] )
{
Ly[j].link[ Ly[j].len++ ] = i;
return true;
}
for(int k=; k<Ly[j].len; k++)
{
if( Find( Ly[j].link[k], L, R ) == true )
{
Ly[j].link[k] = i;
return true;
}
}
}
} return false;
}
bool XYL(int L, int R)
{
memset(Ly, false, sizeof(Ly)); for(int i=; i<=N; i++)
{
memset(used, false, sizeof(used));
if( Find(i, L, R) == false )
return false;
} return true;
} int main()
{
while(scanf("%d%d", &N, &M) != EOF)
{
int i, j, L=, R=M, Mid, ans, v; for(i=; i<=N; i++)
for(j=; j<=M; j++)
{
scanf("%d", &v);
G[i][v] = j;
} for(i=; i<=M; i++)
scanf("%d", &cows[i]); while(L <= R)
{
Mid = (L+R) >> ; for(i=; i<=M; i++)
{
if( XYL(i, i+Mid) == true )
break;
} if(i <= M)
R = Mid-, ans = Mid;
else
L = Mid+;
} printf("%d\n", ans+);
} return ;
}
O - Steady Cow Assignment - POJ 3189(多重匹配+枚举)的更多相关文章
- Steady Cow Assignment POJ - 3189 (最大流+匹配)
Farmer John's N (1 <= N <= 1000) cows each reside in one of B (1 <= B <= 20) barns which ...
- POJ 3189——Steady Cow Assignment——————【多重匹配、二分枚举区间长度】
Steady Cow Assignment Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I ...
- Poj 3189 Steady Cow Assignment (多重匹配)
题目链接: Poj 3189 Steady Cow Assignment 题目描述: 有n头奶牛,m个棚,每个奶牛对每个棚都有一个喜爱程度.当然啦,棚子也是有脾气的,并不是奶牛想住进来就住进来,超出棚 ...
- POJ3189:Steady Cow Assignment(二分+二分图多重匹配)
Steady Cow Assignment Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7482 Accepted: ...
- POJ3189 Steady Cow Assignment —— 二分图多重匹配/最大流 + 二分
题目链接:https://vjudge.net/problem/POJ-3189 Steady Cow Assignment Time Limit: 1000MS Memory Limit: 65 ...
- POJ 2289 Jamie's Contact Groups & POJ3189 Steady Cow Assignment
这两道题目都是多重二分匹配+枚举的做法,或者可以用网络流,实际上二分匹配也就实质是网络流,通过枚举区间,然后建立相应的图,判断该区间是否符合要求,并进一步缩小范围,直到求出解.不同之处在对是否满足条件 ...
- POJ3189 Steady Cow Assignment
Steady Cow Assignment Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6817 Accepted: ...
- POJ 3189 Steady Cow Assignment 【二分】+【多重匹配】
<题目链接> 题目大意: 有n头牛,m个牛棚,每个牛棚都有一定的容量(就是最多能装多少只牛),然后每只牛对每个牛棚的喜好度不同(就是所有牛圈在每个牛心中都有一个排名),然后要求所有的牛都进 ...
- POJ 3189 Steady Cow Assignment
题意:每个奶牛对所有的牛棚有个排名(根据喜欢程度排的),每个牛棚能够入住的牛的数量有个上限,重新给牛分配牛棚,使牛棚在牛心中的排名差(所有牛中最大排名和最小排名之差)最小. 题目输入: 首先是两个 ...
随机推荐
- python实现登录函数,比较简单
一个简单的python实现登录以及修改密码的函数 #密码错误3次,锁定登录: password_list = ['] def account_login(): Tries = 3 while Trie ...
- C#畅谈“网络电视”
C#畅谈“网络电视” 以上是大家比较喜欢的网络电视软件,例如:PPTV,BOX央视影音,PPS等. 今天我就和大家来聊一下简单的“网络电视”.虽然和上边的软件没发比,但是正在向着这个目标努力中…… 一 ...
- jsp中的c标签
核心标签库 引用: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> ...
- ASP.NET实现文件下载
转:http://blog.csdn.net/codeshark/article/details/2473664 方式一:TransmitFile实现下载.将指定的文件直接写入 HTTP 响应输出流, ...
- sqlcode、sqlerrm
Oracle里 非常有用的 两个变量,很少有人用. 标记一下
- 使用ol,添加图书销售排行榜
如果想在网页中展示有前后顺序的信息列表,怎么办呢?如,当当网上的书籍热卖排行榜,如下图所示. 这类信息展示就可以使用<ol>标签来制作有序列表来展示. 语法: <ol> < ...
- UIWebView取消长按放大(用于长按识别二维码)
禁用长按UIWebView时放大镜及选择功能: //通过js调用 - (void)webViewDidFinishLoad:(UIWebView*)webView { // Disable user ...
- 【转】POJ题目分类
初级:基本算法:枚举:1753 2965贪心:1328 2109 2586构造:3295模拟:1068 2632 1573 2993 2996 图:最短路径:1860 3259 1062 2253 1 ...
- 利用js加载本地图片预览功能
直接上代码: 经测试,除safari6包括6以下不支持,其他均可正常显示. 原因:safari6不支持filereader,同时不能使用IE滤镜导致失效. fix: 可以利用canvas,解决safa ...
- C++多重继承虚表的内存分布
接前面虚表的内存分布,今天重点看多重继承的虚表内存分布,简单的说,继承几个类便有几个虚表,如下代码 class Drive : public Base1, public Base2, public B ...