POJ2771_Guardian of Decency(二分图/最大独立集=N-最大匹配)
解决报告
http://blog.csdn.net/juncoder/article/details/38159017
题意:
看到题目我就笑了。。,
老师觉得这种两个学生不是一对:
身高相差40以上(年龄都不是距离了,身高又算什么)
不同性别(sad。。,就不同意基友存在呀。,,谁的肥皂掉了。,。)
喜欢不一样的歌曲类型(你总不能要求两人整天听小苹果吧,,,,,,你是我的小丫小苹果,,,,,,)
喜欢一样的运动( they are likely to be fans of different teams and that would result in fighting......这是什么理由。喜欢同个不同球队还会打起来)
问最多的不在一起的有多少人
思路:
不在一起代表独立于相爱关系的。也就是求最大独立集,集合里面随意两个人都不相爱
最大独立集=结点数-最大匹配
ps不知道是不是写挫了,重写才过。sad。
。。
#include <cmath>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct node
{
int h;
char sex;
char mus[110];
char spo[110];
}M[510],F[510];
int n,m,f,mmap[550][550],pre[550],vis[550];
int pd(int i,int j)
{
if( abs(M[i].h - F[j].h) > 40 )
return 0;
if( strcmp(M[i].mus,F[j].mus) )
return 0;
if( strcmp(M[i].spo,F[j].spo) == 0 )
return 0;
return 1;
}
int dfs(int x)
{
for(int i=m+1;i<=m+f;i++){
if(!vis[i]&&mmap[x][i]){
vis[i]=1;
if(pre[i]==-1||dfs(pre[i])){
pre[i]=x;
return 1;
}
}
}
return 0;
}
int main()
{
int i,j,t,h;
char str[100];
scanf("%d",&t);
while(t--){
scanf("%d",&n);
m=f=1;
memset(mmap,0,sizeof(mmap));
memset(pre,-1,sizeof(pre));
memset(M,0,sizeof(M));
memset(F,0,sizeof(F));
for(i=1;i<=n;i++){
scanf("%d%s",&h,str);
if(str[0]=='M'){
scanf("%s%s",M[m].mus,M[m].spo);
M[m].h=h;
M[m++].sex='M';
}
else {
scanf("%s%s",F[f].mus,F[f].spo);
F[f].h=h;
F[f++].sex='F';
}
}
for(i=1;i<=m;i++){
for(j=1;j<=f;j++){
if(pd(i,j))
mmap[i][m+j]=1;
}
}
int ans=0;
for(i=1;i<=m;i++){
memset(vis,0,sizeof(vis));
ans+=dfs(i);
}
printf("%d\n",n-ans);
}
}
| Time Limit: 3000MS | Memory Limit: 65536K | |
| Total Submissions: 4876 | Accepted: 2056 |
Description
a low probability two persons will become a couple:
- Their height differs by more than 40 cm.
- They are of the same sex.
- Their preferred music style is different.
- Their favourite sport is the same (they are likely to be fans of different teams and that would result in fighting).
So, for any two persons that he brings on the excursion, they must satisfy at least one of the requirements above. Help him find the maximum number of persons he can take, given their vital information.
Input
data items:
- an integer h giving the height in cm;
- a character 'F' for female or 'M' for male;
- a string describing the preferred music style;
- a string with the name of the favourite sport.
No string in the input will contain more than 100 characters, nor will any string contain any whitespace.
Output
Sample Input
2
4
35 M classicism programming
0 M baroque skiing
43 M baroque chess
30 F baroque soccer
8
27 M romance programming
194 F baroque programming
67 M baroque ping-pong
51 M classicism programming
80 M classicism Paintball
35 M baroque ping-pong
39 F romance ping-pong
110 M romance Paintball
Sample Output
3
7
版权声明:本文博客原创文章。博客,未经同意,不得转载。
POJ2771_Guardian of Decency(二分图/最大独立集=N-最大匹配)的更多相关文章
- 【Codevs1922】骑士共存问题(最小割,二分图最大独立集转最大匹配)
题意: 在一个n*n个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示.棋盘上某些方格设置了障碍,骑士不得进入. 对于给定的n*n个方格的国际象棋棋盘和障碍标志,计算棋盘上最多可以放置多少个 ...
- UVA-12083 Guardian of Decency 二分图 最大独立集
题目链接:https://cn.vjudge.net/problem/UVA-12083 题意 学校组织去郊游,选择最多人数,使得任意两个人之间不能谈恋爱 不恋爱条件是高差大于40.同性.喜欢的音乐风 ...
- 长脖子鹿放置【洛谷P5030】二分图最大独立集变形题
题目背景 众周所知,在西洋棋中,我们有城堡.骑士.皇后.主教和长脖子鹿. 题目描述 如图所示,西洋棋的“长脖子鹿”,类似于中国象棋的马,但按照“目”字攻击,且没有中国象棋“别马腿”的规则.(因为长脖子 ...
- HDU 3829 - Cat VS Dog (二分图最大独立集)
题意:动物园有n只猫和m条狗,现在有p个小孩,他们有的喜欢猫,有的喜欢狗,其中喜欢猫的一定不喜欢狗,喜欢狗的一定不喜欢猫.现在管理员要从动物园中移除一些动物,如果一个小孩喜欢的动物留了下来而不喜欢的动 ...
- HDU3829(KB10-J 二分图最大独立集)
Cat VS Dog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others)Total ...
- bzoj 1143 二分图最大独立集
我们可以将一个点拆成两个点x,y,那么如果存在一条i->j的路径,我们就连接xi,yj,那么答案就是n-最大匹配数. 因为i->j所以对于i与j只能选一个,那么我们只需要求出来二分图的最大 ...
- [luoguP3355] 骑士共存问题(二分图最大独立集)
传送门 模型 二分图最大独立集,转化为二分图最大匹配,从而用最大流解决. 实现 首先把棋盘黑白染色,使相邻格子颜色不同. 把所有可用的黑色格子看做二分图X集合中顶点,可用的白色格子看做Y集合顶点. 建 ...
- 洛谷 - P5030 - 长脖子鹿放置 - 二分图最大独立集
https://www.luogu.org/problemnew/show/P5030 写的第一道黑色题,图建对了. 隐约觉得互相攻击要连边,规定从奇数行流向偶数行. 二分图最大独立集=二分图顶点总数 ...
- TopCoder12808 「SRM594Medium」FoxAndGo3 二分图最大独立集
问题描述 一个 \(N \times N\) 围棋棋盘,任意两个白子不相邻,你要加入若干个黑子并提出白子,最大化空格数目. submit 题解 显然最终棋盘的局面不能够一个白子和它周围的空格都是空的, ...
随机推荐
- Android 角色时间戳
我是在用MediaRecorder进行录像时发生视频和音频不同步的问题,请教了一些人后感觉应该是没有时间戳,之前一直觉得时间戳就是给用户看的一个数据,查了一下发现不是的,以下是转载的.希望对大家实用: ...
- 上Mysql com.mysql.jdbc.StatementImpl$CancelTask内存泄漏问题和解决方法
近来在负责公司短信网关的维护及建设,随着公司业务发展对短信依赖越来越严重了,短信每天发送量也比曾经每天40多w发送量暴增到每天达到200w发送量.由于是採用Java做发送底层,压力递增情况下不可避免的 ...
- 指定为文件头部Expires要么Cache-Control
Cache-Control :private,no-cache.must-revalidate,max-age Expires指定页面过期时间 response.setContentType(&quo ...
- c++ stl algorithm: std::find, std::find_if
std::find: 查找容器元素, find仅仅能查找容器元素为<基本数据类型> [cpp] view plaincopy #include <iostream> #incl ...
- XML数据读取方式性能比较(一)
原文:XML数据读取方式性能比较(一) 几个月来,疑被SOA,一直在和XML操作打交道,SQL差不多又忘光了.现在已经知道,至少有四种常用人XML数据操作方式(好像Java差不多),不过还没有实际比较 ...
- NSUserDefaults API简单的介绍和使用英文文件
Overview The NSUserDefaults class provides a programmatic interface for interacting with the default ...
- Quartus II 11.0破发点(不同的是低版本号)
小订单: 近期用到了黑金的altera飓风4带的开发板,套件里面带的Quartus II软件版本号为11.0,之前所用版本号为9.1,所以打算吧11.0版本号也安装一下.没想到这个破解的过程让我属实蛋 ...
- SQL SERVER 内存分配及常见内存问题(1)——简介
原文:SQL SERVER 内存分配及常见内存问题(1)--简介 一.问题: 1.SQL Server 所占用内存数量从启动以后就不断地增加: 首先,作为成熟的产品,内存溢出的机会微乎其微.对此要了解 ...
- Think in Java(一):Java基础
一. OOP的特点 (1) 万物皆为对象; (2) 程序是对象的集合,他们通过发送信息来告诉彼此所要做的; (3) 每一个对象都有自己的由其它对象所构成的存储; (4) 每一个对象都拥有它的类型; ( ...
- HDU 1711 Number Sequence(kmp)
Problem Description Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b[2], .... ...