/*

http://acm.hust.edu.cn/vjudge/contest/view.action?cid=71805#problem/C

*/

性质:

【1】二分图最大点独立数=顶点数-二分图的最大匹配

【2】二分图最小点覆盖数=二分图的最大匹配

这个题目就是求最大点独立集,根据性质【1】可以求解。

对于这个问题,我们可以根据性别的不同建立二分图,每两个可能Make Love的人连一条边,o(n*n)的效率可以建图。

然后跑一遍二分图的最大匹配,答案就出来了。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std; const int MAXN=;
int nx,ny;
int g[MAXN][MAXN];
int cx[MAXN],cy[MAXN];
int mk[MAXN];
int n; struct People
{
int age;
char sex[];
char music[];
char sport[];
}F[MAXN],M[MAXN]; int path(int u)
{
for(int v=;v<ny;v++)
{
if(g[u][v]&&!mk[v])
{
mk[v]=;
if(cy[v]==-||path(cy[v]))
{
cx[u]=v;
cy[v]=u;
return ;
}
}
}
return ;
} int MaxMatch()
{
int res=;
memset(cx,-,sizeof(cx));
memset(cy,-,sizeof(cy));
for(int i=;i<nx;i++)
{
if(cx[i]==-)
{
memset(mk,,sizeof(mk));
res=res+path(i);
}
}
return res;
} bool ok(People a, People b)
{
if(abs(a.age-b.age)<=&&strcmp(a.music,b.music)==&&strcmp(a.sport,b.sport)!=)
return ;
return ;
} int main()
{
int T,i,j;
scanf("%d",&T);
while(T--)
{
nx=,ny=;
memset(g,,sizeof(g)); scanf("%d",&n); //建立二分图
for(i=;i<=n;i++)
{
int age; char sex[];
char music[]; char sport[];
scanf("%d%s%s%s",&age,sex,music,sport);
if(sex[]=='M')
{
M[nx].age=age;
strcpy(M[nx].sex,sex);
strcpy(M[nx].music,music);
strcpy(M[nx].sport,sport);
nx++;
}
else if(sex[]=='F')
{
F[ny].age=age;
strcpy(F[ny].sex,sex);
strcpy(F[ny].music,music);
strcpy(F[ny].sport,sport);
ny++;
}
} for(i=;i<nx;i++)
for(j=;j<ny;j++)
if(ok(M[i],F[j]))
g[i][j]=; //跑二分图最大匹配,
//二分图最大点独立数=顶点数-二分图的最大匹配
//二分图最小点覆盖数=二分图的最大匹配 printf("%d\n",n-MaxMatch());
}
return ;
}

UVA 12083 POJ 2771 Guardian of Decency的更多相关文章

  1. poj——2771 Guardian of Decency

    poj——2771    Guardian of Decency Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 5916   ...

  2. POJ 2771 Guardian of Decency 【最大独立集】

    传送门:http://poj.org/problem?id=2771 Guardian of Decency Time Limit: 3000MS   Memory Limit: 65536K Tot ...

  3. POJ 2771 Guardian of Decency (二分图最大点独立集)

    Guardian of Decency Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 6133   Accepted: 25 ...

  4. POJ 2771 Guardian of Decency(最大独立集数=顶点数-最大匹配数)

    题目链接: http://poj.org/problem?id=2771 Description Frank N. Stein is a very conservative high-school t ...

  5. POJ 2771 Guardian of Decency

    http://poj.org/problem?id=2771 题意: 一个老师想带几个同学出去,但是他怕他们会谈恋爱,所以带出去的同学两两之间必须满足如下条件之一: ①身高差大于40  ②同性 ③喜欢 ...

  6. poj 2771 Guardian of Decency 解题报告

    题目链接:http://poj.org/problem?id=2771 题目意思:有一个保守的老师要带他的学生来一次短途旅行,但是他又害怕有些人会变成情侣关系,于是就想出了一个方法: 1.身高差距   ...

  7. POJ 2771 Guardian of Decency(求最大点独立集)

    该题反过来想:将所有可能发生恋爱关系的男女配对,那么可以带出去的人数应该等于这个二分图的最大独立集 先要做一下预处理,把不符合要求的双方先求出来, company[i][j]表示i.j四个标准都不符合 ...

  8. poj 2771 Guardian of Decency(最大独立数)

    题意:人与人之间满足4个条件之一即不能成为一对(也就说这4个条件都不满足才能成为一对),求可能的最多的单身人数. 思路:把男女分为两部分,接下来就是二分图的匹配问题.把能成为一对的之间连边,然后求出最 ...

  9. POJ——T2271 Guardian of Decency

    http://poj.org/problem?id=2771 Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 5932   A ...

随机推荐

  1. dll间接应用问题

    在项目prj引用一个dll,a.dll,时,此dll应用b.dll 此时不将b.dll引用添加到prj,会有问题

  2. Hibernate配置详细解释

     hibernate.cfg.xml <!--标准的XML文件的起始行,version='1.0'表明XML的版本,encoding='gb2312'表明XML文件的编码方式--> < ...

  3. xcode6+ios8 横屏下启动画面不显示问题修改

    本文转载自汉果博客 » xcode6+ios8 横屏下启动画面不显示问题修改 最近我做游戏 发现xcode6+ios8 横屏下启动画面不显示   显示黑屏 . 设置横屏后 设置catalog 添加使用 ...

  4. CustomSummaryCalculate 用法

    private void gridView1_CustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs ...

  5. sql语句的学习(1)

    一.创建表 CREATE TABLE `student` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) DEFAULT NULL COMMENT '姓名', ` ...

  6. ARM应用调试思路、方法总结、笔记

    一.应用调试1:使用strace命令来跟踪系统调用 二.应用调试2:使用GDB来调试应用程序 编译gdb,gdbservertar xjf gdb-7.4.tar.bz2cd gdb-7.4/./co ...

  7. 【转】spring管理属性配置文件properties——使用PropertiesFactoryBean|spring管理属性配置文件properties——使用PropertyPlaceholderConfigurer

     spring管理属性配置文件properties--使用PropertiesFactoryBean 对于属性配置,一般采用的是键值对的形式,如:key=value属性配置文件一般使用的是XXX.pr ...

  8. MQ队列堆积太长,消费不过来怎么办(转)

    转自:http://windwrite.com/archives/603 我们现有的业务就面临此问题,消息生产太快,消费不过来,导致队列堆积很长,把服务器内存耗尽,这时RabbitMQ的处理能力很低下 ...

  9. Django 过滤器

    过滤器 描述 示例 upper 以大写方式输出 {{ user.name | upper }} add 给value加上一个数值 {{ user.age | add:"5" }} ...

  10. POJ 2350 Above Average

    Description It is said that 90% of frosh expect to be above average in their class. You are to provi ...