POJ 2771 Guardian of Decency
Description
Frank N. Stein is a very conservative high-school teacher. He wants to take some of his students on an excursion, but he is afraid that some of them might become couples. While you can never exclude this possibility, he has made some rules that he thinks indicates 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
The first line of the input consists of an integer T ≤ 100 giving the number of test cases. The first line of each test case consists of an integer N ≤ 500 giving the number of pupils. Next there will be one line for each pupil consisting of four space-separated 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
For each test case in the input there should be one line with an integer giving the maximum number of eligible pupils.
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
Source
Northwestern Europe 2005
对于都不满足条件的连边
这道问题就转换成了从中选取一些点使其两两不相邻
最大点独立集的裸题
最大点独立集=N-二分图最大匹配
这毒瘤题居然卡Dinic!!!
这种出题人就应该被挂起来淦!!
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const int MAXN=1001;
int vis[MAXN];
int link[MAXN];
int map[MAXN][MAXN];
int N;
bool dfs(int x)
{
for(int i=1;i<=N;i++)
{
if(map[x][i]&&!vis[i])
{
vis[i]=1;
if(!link[i]||dfs(link[i]))
{
link[i]=x;
return 1;
}
}
}
return 0;
}
struct S
{
int tall;
string a,b,c;
}s[MAXN];
int main()
{
#ifdef WIN32
freopen("a.in","r",stdin);
#else
#endif
int Test;
scanf("%d",&Test);
while(Test--)
{
memset(vis,0,sizeof(vis));
memset(link,0,sizeof(link));
memset(map,0,sizeof(map));
scanf("%d",&N);
for(int i=1;i<=N;i++)
cin>>s[i].tall>>s[i].a>>s[i].b>>s[i].c;
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++)
if(i!=j&&s[i].a!=s[j].a&&s[i].b==s[j].b&&s[i].c!=s[j].c&&fabs(s[i].tall-s[j].tall)<=40 )
map[i][j]=1;
int ans=0;
for(int i=1;i<=N;i++)
{
memset(vis,0,sizeof(vis));
if(dfs(i))
ans++;
}
printf("%dn",(N*2-ans)/2 );
}
return 0;
}
- 英语不好,数学也不好,能不能学WEB前端?
- 10.19 iptables规则备份和恢复
- 11.6 MariaDB安装
- cocos2dx-v3.4 2048(四):游戏逻辑的设计与实现
- Linux基础(day39)
- Chrome扩展程序之编码&时间戳小工具
- WINDOWS下烧一只鹅
- 11.3/11.4/11.5 MySQL安装
- Greenrobot-EventBus源码学习(六)
- Greenrobot-EventBus源码学习(五)
- writeup分享 | 近期做的比较好的web
- Greenrobot-EventBus源码学习(四)
- Linux基础(day38)
- EventBus 源码学习笔记(三)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Angular list列表的事件响应实现
- Angular list列表绑定的一个例子
- Angular双向绑定的一个例子
- mysqlbinlog命令详解 Part 3 - 查看十六进制格式内容
- MySQL information_schema详解 CHARACTER_SETS 表
- 彻底弄懂 Unicode 编码
- 两种使用代码获得SAP CRM product sales status的办法
- C#: "$"作用和用法
- SAP ABAP字符和字符串变量隐式转换的一些规则
- MySQL information_schema详解 COLLATION_CHARACTER_SET_APPLICABILITY
- 如何处理Angular项目在Visual Studio Code打开报关于@Decorators的警告信息
- QT 中普通数值与字符串之间的转换
- C# 时间与时间戳互转 13位
- 在C#中ref和out具体怎么使用?在什么情况下使用?
- Vs code 创建vue模版