POJ 2289 Jamie's Contact Groups (二分+匹配/网络流)

2024-04-23 20:08

本文主要是介绍POJ 2289 Jamie's Contact Groups (二分+匹配/网络流),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题意:把n个点,分到m个组中。题目给出每一个点可以被分到的那些组。要求分配完毕后,最大的那一个组的人数最小。
题解:比较怪。一开始化作费用流做。假设每一次增广过后,路径上所有边的费用增大相等的值,这样一来,被增广过的路径下一次就不会被立即增广了。这样就能使与汇点相连的那些点均匀增加。结果悲剧TLE```。


#include <iostream>
using namespace std;#define MAX 1001
#define INF 999999999
#define min(a,b) (a<b?a:b)int match[MAX][MAX];
int group[MAX], cnt[MAX];
bool map[MAX][MAX];
bool vis[MAX];
int n, m;bool find_path ( int u )
{for ( int i = 1; i <= m; i++ ){if ( ! vis[i] && map[u][i] ){vis[i] = true;if ( match[i][0] < group[i] ){match[i][++match[i][0]] = u;return true;}for ( int j = 1; j <= match[i][0]; j++ )if ( find_path ( match[i][j] ) ){match[i][j] = u;return true;}}}return false;
}bool Hungary ()
{memset(match,0,sizeof(match));for ( int i = 1; i <= n; i++ ){memset(vis,0,sizeof(vis));if ( ! find_path ( i ) )return false;}return true;
}bool check ( int cap )
{for ( int i = 1; i <= m; i++ )group[i] = min ( cap, cnt[i] );return Hungary ();
}int main()
{int l, r, mid, g, i;char name[20];while ( scanf("%d%d",&n,&m) && ( n || m ) ){memset(map,0,sizeof(map));memset(cnt,0,sizeof(cnt));for ( i = 1; i <= n; i++ ){scanf("%s",name);while ( true ){scanf("%d",&g);cnt[g+1]++;map[i][g+1] = true;if ( getchar() == '\n' ) break;}}l = 0; r = 1001;while ( l < r ){mid = l + ( r - l ) / 2;if ( check ( mid ) )r = mid;elsel = mid + 1;}printf("%d\n",r);}//system("pause");return 0;
}


这篇关于POJ 2289 Jamie's Contact Groups (二分+匹配/网络流)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/929757

相关文章

Nginx location匹配模式与规则详解

《Nginxlocation匹配模式与规则详解》:本文主要介绍Nginxlocation匹配模式与规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、环境二、匹配模式1. 精准模式2. 前缀模式(不继续匹配正则)3. 前缀模式(继续匹配正则)4. 正则模式(大

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

详解nginx 中location和 proxy_pass的匹配规则

《详解nginx中location和proxy_pass的匹配规则》location是Nginx中用来匹配客户端请求URI的指令,决定如何处理特定路径的请求,它定义了请求的路由规则,后续的配置(如... 目录location 的作用语法示例:location /www.chinasem.cntestproxy

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解