POJ 2289(多重匹配+二分)

时间:2022-12-26 15:38:43

POJ 2289(多重匹配+二分)

把n个人,分到m个组中。题目给出每一个人可以被分到的那些组。要求分配完毕后,最大的那一个组的人数最小。

用二分查找来枚举。

#include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
using namespace std;
int map[1010][510];
int vis[1010];
int link[1010][510];
int num[510];
int mid;
int n,m;
bool dfs(int i)
{
for(int j=0; j<m; j++)
{
if((!vis[j])&&map[i][j])
{
vis[j]=1;
if(num[j]<mid)
{
link[j][num[j]++]=i;
return 1;
}
for(int p=0; p<num[j]; p++)
if(dfs(link[j][p]))
{
link[j][p]=i;
return 1;
}
}
}
return 0;
}
int mult()
{
memset(num,0,sizeof(num));
for(int i=0; i<n; i++)
{
memset(vis,0,sizeof(vis));
if(!dfs(i))
return 0;
}
return 1;
}
int main()
{
char s1[20];
while(cin>>n>>m,n&&m)
{
getchar();
memset(map,0,sizeof(map));
for(int i=0; i<n; i++)
{
scanf("%s",s1);
while(1)
{
int x;
scanf("%d",&x);
map[i][x] = 1;
char ch = getchar();
if(ch == '\n')
break;
}
} int l=0,r=n-1;
while(l<=r)
{
mid=(l+r)>>1;
if(mult())
r=mid-1;
else
l=mid+1;
}
cout<<r+1<<endl;
}
return 0;
}

  

POJ 2289(多重匹配+二分)的更多相关文章

  1. POJ 2289&Tab;Jamie&&num;39&semi;s Contact Groups(多重匹配&plus;二分)

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

  2. POJ 2112&Tab;Optimal Milking(Floyd&plus;多重匹配&plus;二分枚举)

    题意:有K台挤奶机,C头奶牛,每个挤奶机每天只能为M头奶牛服务,下面给的K+C的矩阵,是形容相互之间的距离,求出来走最远的那头奶牛要走多远   输入数据: 第一行三个数 K, C, M  接下来是   ...

  3. 稳定的奶牛分配 &amp&semi;&amp&semi; 二分图多重匹配&plus;二分答案

    题意: 农夫约翰有N(1<=N<=1000)只奶牛,每只奶牛住在B(1<=B<=20)个奶牛棚中的一个.当然,奶牛棚的容量有限.有些奶牛对它现在住的奶牛棚很满意,有些就不太满意 ...

  4. Steady Cow Assignment---poj3189(多重匹配&plus;二分)

    题目链接:http://poj.org/problem?id=3189 题意:有n头牛,B个牛棚,每头牛对牛棚都有一个喜欢度,接下来输入N*B的矩阵第i行第j列的数x表示:第i头牛第j喜欢的是x; 第 ...

  5. HDU 1669 Jamie&&num;39&semi;s Contact Groups(多重匹配&plus;二分枚举)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1669 题目大意: 给你各个人可以属于的组,把这些人分组,使这些组中人数最多的组人数最少,并输出这个人数 ...

  6. Jamie&&num;39&semi;s Contact Groups---hdu1669--poj2289(多重匹配&plus;二分)

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

  7. POJ2112:Optimal Milking&lpar;Floyd&plus;二分图多重匹配&plus;二分&rpar;

    Optimal Milking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 20262   Accepted: 7230 ...

  8. HDU 1669 二分图多重匹配&plus;二分

    Jamie's Contact Groups Time Limit: 15000/7000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/ ...

  9. POJ 2289 多重二分匹配&plus;二分 模板

    题意:在通讯录中有N个人,每个人能可能属于多个group,现要将这些人分组m组,设各组中的最大人数为max,求出该最小的最大值 下面用的是朴素的查找,核心代码find_path复杂度是VE的,不过据说 ...

随机推荐

  1. STM32 程序所占用空间计算 &amp&semi;&amp&semi; FLASH存储的起始地址计算

    程序编译完成,会乘车program size .. 对STM32容量选型或者 计算FLASH 充当EEPROM起始地址时会用到此参数. 按照下面截图  程序空间 = (16700+732+4580)/ ...

  2. hdu 1423 最长公共递增子序列

    这题一开始把我给坑了,我还没知道LCIS的算法,然后就慢慢搞吧,幸运的是还真写出来了,只不过麻烦了一点. 我是将该题转换为多条线段相交,然后找出最多多少条不相交,并且其数值死递增的. 代码如下: #i ...

  3. Duilib介绍以及各个类的简介

    转自http://note.sdo.com/u/icez/n/mvO-X~jyVnpFnM01A0000m DirectUI意为直接在父窗口上绘图(Paint on parent dc directl ...

  4. Asp&period;net 管道事件

    在处理该请求时将由 HttpApplication 类执行以下事件. 希望扩展 HttpApplication 类的开发人员尤其需要注意这些事件. 1. 对请求进行验证,将检查浏览器发送的信息,并确定 ...

  5. chart画图

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  6. Celery 源码解析八:State 和 Result

    在前面几篇解析中,我们已经看过了 Worker 是如何运行的,Task 是如何创建的,以及怎么被路由到 Worker 中,除了这些之外,我们还对流量限制,Worker 控制和 Task/Worker ...

  7. bzoj千题计划188:bzoj1923&colon; &lbrack;Sdoi2010&rsqb;外星千足虫 (高斯—若尔当消元法解异或方程组)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1923 #include<cstdio> #include<cstring> ...

  8. Spark笔记之使用UDF(User Define Function)

    一.UDF介绍 UDF(User Define Function),即用户自定义函数,Spark的官方文档中没有对UDF做过多介绍,猜想可能是认为比较简单吧. 几乎所有sql数据库的实现都为用户提供了 ...

  9. gevent动态随时添加任务

    关于爬虫,有scrapy框架,也有requests加协程 协程 进程的方法. 相关的包很多,比如threading .threadpool.multiprocessing,还有threadpoolex ...

  10. HDU1811 拓扑排序判环&plus;并查集

    HDU Rank of Tetris 题目:http://acm.hdu.edu.cn/showproblem.php?pid=1811 题意:中文问题就不解释题意了. 这道题其实就是一个拓扑排序判圈 ...