题目链接

题意:Jamie有很多联系人,但是很不方便管理,他想把这些联系人分成组,已知这些联系人可以被分到哪个组中去,而且要求每个组的联系人上限最小,即有一整数k,使每个组的联系人数都不大于k,问这个k最小是多

少?

 

一对多的二分图的多重匹配。二分图的多重匹配算法的实现类似于匈牙利算法,对于集合x中的元素xi,找到一个与其相连的元素yi后,检查匈牙利算法的两个条件是否成立,若yi未被匹配,则将

xi,yi匹配。否则,如果与yi匹配的元素已经达到上限,那么在所有与yi匹配的元素中选择一个元素,检查是否能找到一条增广路径,如果能,则让出位置,让xi与yi匹配。

二分求出limit,知道找到可以构成多重匹配的最小限制limit,在main函数中二分搜索。

#include<stdio.h>
#include<string.h>
#include<queue>
#include<algorithm>
using namespace std;
#define N 1010
int vis[N], maps[N][N], ans, n, m;
struct node
{
int cnt;///和yi相匹配的个数;
int k[N];///和yi相匹配的x的集合;
}Linky[N]; bool Find(int u, int limit)
{
for(int i=; i<=m; i++)
{
if(!vis[i] && maps[u][i])
{
vis[i] = ;
if(Linky[i].cnt < limit)
{
Linky[i].k[ Linky[i].cnt++ ] = u;
return true;
}
for(int j=; j<Linky[i].cnt; j++)
{
if(Find( Linky[i].k[j], limit ))
{
Linky[i].k[j] = u;
return true;
}
}
}
}
return false;
} bool xyl(int limit)///匈牙利算法;
{
memset(Linky, , sizeof(Linky));
for(int i=; i<=n; i++)
{
memset(vis, , sizeof(vis));
if(!Find(i, limit))///当前的limit让i没有匹配,所以不能用limit;
return false;
}
return true;
} int main()
{
int x;
char s[], ch;
while(scanf("%d %d", &n, &m), m+n)
{
memset(maps, , sizeof(maps));
for(int i=; i<=n; i++)
{
scanf("%s", s);
while()
{
scanf("%d%c", &x, &ch);
maps[i][x+] = ;
if(ch == '\n')
break;
}
}
int L = , R = n;
ans = n;
while(L <= R)
{
int mid = (L+R)/;
if(xyl(mid))///如果当前mid满足题意;
{
R = mid-;
ans = mid;
}
else
L = mid+;
}
printf("%d\n", ans);
}
return ;
}

Jamie's Contact Groups---hdu1669--poj2289(多重匹配+二分)的更多相关文章

  1. POJ2289 Jamie's Contact Groups(二分图多重匹配)

    Jamie's Contact Groups Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 7721   Accepted: ...

  2. POJ - 2289 Jamie's Contact Groups (二分图多重匹配)

    题意:N个人,M个团体.每个人有属于自己的一些团体编号.将每个人分配到自己属于的团体中,问这个人数最多的团体其人数最小值是多少. 分析:一个一对多的二分图匹配,且是最大值最小化问题.二分图的多重匹配建 ...

  3. POJ2289 Jamie's Contact Groups —— 二分图多重匹配/最大流 + 二分

    题目链接:https://vjudge.net/problem/POJ-2289 Jamie's Contact Groups Time Limit: 7000MS   Memory Limit: 6 ...

  4. POJ2289:Jamie's Contact Groups(二分+二分图多重匹配)

    Jamie's Contact Groups Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/ ...

  5. poj 2289 Jamie's Contact Groups【二分+最大流】【二分图多重匹配问题】

    题目链接:http://poj.org/problem?id=2289 Jamie's Contact Groups Time Limit: 7000MS   Memory Limit: 65536K ...

  6. POJ 2289——Jamie's Contact Groups——————【多重匹配、二分枚举匹配次数】

    Jamie's Contact Groups Time Limit:7000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I ...

  7. Poj 2289 Jamie's Contact Groups (二分+二分图多重匹配)

    题目链接: Poj 2289 Jamie's Contact Groups 题目描述: 给出n个人的名单和每个人可以被分到的组,问将n个人分到m个组内,并且人数最多的组人数要尽量少,问人数最多的组有多 ...

  8. POJ 2289 Jamie's Contact Groups 二分图多重匹配 难度:1

    Jamie's Contact Groups Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 6511   Accepted: ...

  9. Jamie's Contact Groups POJ - 2289(多重匹配 最大值最小化 最大流)

    Jamie's Contact Groups Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 8567   Accepted: ...

  10. POJ 2289 Jamie's Contact Groups / UVA 1345 Jamie's Contact Groups / ZOJ 2399 Jamie's Contact Groups / HDU 1699 Jamie's Contact Groups / SCU 1996 Jamie's Contact Groups (二分,二分图匹配)

    POJ 2289 Jamie's Contact Groups / UVA 1345 Jamie's Contact Groups / ZOJ 2399 Jamie's Contact Groups ...

随机推荐

  1. asp.net mvc中加入log4net记录错误日志

    直接上代码示例:https://share.weiyun.com/aff36f2547514cfefe129ebb8ccb28ef 首先添加加log4net的dll,推荐用nuget.... 贴上配置 ...

  2. 【Java 线程的深入研究4】ThreadPoolExecutor运转机制详解

    hreadPoolExecutor机制 一.概述 1.ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调 ...

  3. 资深投资人全力反击: VC增值平台从来就不是一坨狗屎

    编者注: 本文来自海外著名科技博客VentureBeat, 英文原文出自Kyle Lacy之手 ,中文版由天地会珠海分舵进行编译. 文章主要是针对前几天德国VC Christian Claussen的 ...

  4. 分享jQuery封装好的一些常用操作

    1. 禁止右键点击 $(document).ready(function(){   $(document).bind("contextmenu",function(e){      ...

  5. Win8快捷键收集大汇总

    键盘党的用户有福了,熟悉操作系统快捷键,提高开发效率. Windows 8 常用快捷键: Windows 键 可在开始屏幕主菜单及最后一个应用程序间循环切换 Windows 键 + C 打开“超级按钮 ...

  6. c# JsonHelper类

    using System; using System.Collections; using System.Collections.Generic; using System.Linq; using S ...

  7. 2.1 C语言下的位运算

    位运算符: 注:运算量仅仅能为整型和字符型数据,不能是实数型的数据. 当进行&运算时:0&1=0.1&0=0:1&1=1:0&0=0: 当进行|运算时:0|1= ...

  8. 超全面的JavaWeb笔记day05<xml&dtd&jaxp>

    0.表单提交方式(*****) button提交 超链接提交 事件 1.xml简介和应用(了解) 2.xml文档声明和乱码解决(*****) 文档声明 必须放在第一行第一列 设置xml编码和保存编码一 ...

  9. Objective-C语法之字符串NSString

    Objective-C里核心的处理字符串的类就是NSString和 NSMutableString这两个类,这两个类完成了Objective-C中字符串大部分功能的处理.这两个类的最主要的区别是NSS ...

  10. apache 图片防盗链

    RewriteEngine on RewriteCond %{HTTP_REFERER} !ot.com [NC] RewriteCond %{HTTP_REFERER} !baidu.com [NC ...