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(多重匹配+二分)的更多相关文章
-
POJ 2289	Jamie&#39;s Contact Groups(多重匹配+二分)
题意: Jamie有很多联系人,但是很不方便管理,他想把这些联系人分成组,已知这些联系人可以被分到哪个组中去,而且要求每个组的联系人上限最小,即有一整数k,使每个组的联系人数都不大于k,问这个k最小是 ...
-
POJ 2112	Optimal Milking(Floyd+多重匹配+二分枚举)
题意:有K台挤奶机,C头奶牛,每个挤奶机每天只能为M头奶牛服务,下面给的K+C的矩阵,是形容相互之间的距离,求出来走最远的那头奶牛要走多远 输入数据: 第一行三个数 K, C, M 接下来是 ...
-
稳定的奶牛分配 &;&; 二分图多重匹配+二分答案
题意: 农夫约翰有N(1<=N<=1000)只奶牛,每只奶牛住在B(1<=B<=20)个奶牛棚中的一个.当然,奶牛棚的容量有限.有些奶牛对它现在住的奶牛棚很满意,有些就不太满意 ...
-
Steady Cow Assignment---poj3189(多重匹配+二分)
题目链接:http://poj.org/problem?id=3189 题意:有n头牛,B个牛棚,每头牛对牛棚都有一个喜欢度,接下来输入N*B的矩阵第i行第j列的数x表示:第i头牛第j喜欢的是x; 第 ...
-
HDU 1669 Jamie&#39;s Contact Groups(多重匹配+二分枚举)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1669 题目大意: 给你各个人可以属于的组,把这些人分组,使这些组中人数最多的组人数最少,并输出这个人数 ...
-
Jamie&#39;s Contact Groups---hdu1669--poj2289(多重匹配+二分)
题目链接 题意:Jamie有很多联系人,但是很不方便管理,他想把这些联系人分成组,已知这些联系人可以被分到哪个组中去,而且要求每个组的联系人上限最小,即有一整数k,使每个组的联系人数都不大于k,问这个 ...
-
POJ2112:Optimal Milking(Floyd+二分图多重匹配+二分)
Optimal Milking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 20262 Accepted: 7230 ...
-
HDU 1669 二分图多重匹配+二分
Jamie's Contact Groups Time Limit: 15000/7000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/ ...
-
POJ 2289 多重二分匹配+二分 模板
题意:在通讯录中有N个人,每个人能可能属于多个group,现要将这些人分组m组,设各组中的最大人数为max,求出该最小的最大值 下面用的是朴素的查找,核心代码find_path复杂度是VE的,不过据说 ...
随机推荐
-
STM32 程序所占用空间计算 &;&; FLASH存储的起始地址计算
程序编译完成,会乘车program size .. 对STM32容量选型或者 计算FLASH 充当EEPROM起始地址时会用到此参数. 按照下面截图 程序空间 = (16700+732+4580)/ ...
-
hdu 1423 最长公共递增子序列
这题一开始把我给坑了,我还没知道LCIS的算法,然后就慢慢搞吧,幸运的是还真写出来了,只不过麻烦了一点. 我是将该题转换为多条线段相交,然后找出最多多少条不相交,并且其数值死递增的. 代码如下: #i ...
-
Duilib介绍以及各个类的简介
转自http://note.sdo.com/u/icez/n/mvO-X~jyVnpFnM01A0000m DirectUI意为直接在父窗口上绘图(Paint on parent dc directl ...
-
Asp.net 管道事件
在处理该请求时将由 HttpApplication 类执行以下事件. 希望扩展 HttpApplication 类的开发人员尤其需要注意这些事件. 1. 对请求进行验证,将检查浏览器发送的信息,并确定 ...
-
chart画图
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
-
Celery 源码解析八:State 和 Result
在前面几篇解析中,我们已经看过了 Worker 是如何运行的,Task 是如何创建的,以及怎么被路由到 Worker 中,除了这些之外,我们还对流量限制,Worker 控制和 Task/Worker ...
-
bzoj千题计划188:bzoj1923: [Sdoi2010]外星千足虫 (高斯—若尔当消元法解异或方程组)
http://www.lydsy.com/JudgeOnline/problem.php?id=1923 #include<cstdio> #include<cstring> ...
-
Spark笔记之使用UDF(User Define Function)
一.UDF介绍 UDF(User Define Function),即用户自定义函数,Spark的官方文档中没有对UDF做过多介绍,猜想可能是认为比较简单吧. 几乎所有sql数据库的实现都为用户提供了 ...
-
gevent动态随时添加任务
关于爬虫,有scrapy框架,也有requests加协程 协程 进程的方法. 相关的包很多,比如threading .threadpool.multiprocessing,还有threadpoolex ...
-
HDU1811 拓扑排序判环+并查集
HDU Rank of Tetris 题目:http://acm.hdu.edu.cn/showproblem.php?pid=1811 题意:中文问题就不解释题意了. 这道题其实就是一个拓扑排序判圈 ...