HDU3829 Cat VS Dog
题目链接:https://vjudge.net/problem/HDU-3829
题目大意:
有\(P\)个小孩,\(N\)只猫,\(M\)只狗。每个小孩都有自己喜欢的某一只宠物和讨厌的某一只宠物(其中必定一只是猫,一只是狗),如果某个小孩喜欢的宠物被留下,而讨厌的宠物被带走,则这个小孩就会很开心。问要留下哪些宠物才能使得开心的小孩最多,求出这个最多的数量。
知识点: 最大独立集
解题思路:
对于两个小孩,如果其中一个喜欢的宠物刚好是另一个讨厌的宠物,那么这两个小孩不能一起开心。将不能一起开心的小孩匹配起来,则最多的开心小孩的数目即为该二分图的最大独立集。
AC代码:
#include <bits/stdc++.h> using namespace std; bool line[][],used[];
int to[];
struct per{
int like,dislike;
}chi[];
int turn(char s[]){
int len=strlen(s);
int ret=;
for(int i=;i<len;i++){
ret*=;
ret+=s[i]-'';
}
if(s[]=='C') ret+=;
return ret;
}
bool check(int x,int n){
for(int j=;j<=n;j++){
if(line[x][j]&&!used[j]){
used[j]=true;
if(to[j]==||check(to[j],n)){
to[j]=x;
return true;
}
}
}
return false;
}
int main(){
int N,M,P;
char i1[],i2[];
while(scanf("%d%d%d",&N,&M,&P)==){
for(int i=;i<=P;i++){
for(int j=;j<=P;j++) line[i][j]=false;
to[i]=;
}
for(int i=;i<=P;i++){
scanf("%s %s",i1,i2);
chi[i].like=turn(i1);
chi[i].dislike=turn(i2);
} for(int i=;i<=P;i++){
for(int j=i+;j<=P;j++){
if(chi[i].like==chi[j].dislike||chi[i].dislike==chi[j].like){
line[i][j]=line[j][i]=true;
}
}
}
int all=;
for(int i=;i<=P;i++){
memset(used,false,sizeof(used));
if(check(i,P)) all++;
}
printf("%d\n",(*P-all)/);
}
return ;
}
HDU3829 Cat VS Dog的更多相关文章
- HDU3829 Cat VS Dog —— 最大独立集
题目链接:https://vjudge.net/problem/HDU-3829 Cat VS Dog Time Limit: 2000/1000 MS (Java/Others) Memory ...
- Hdu3829 Cat VS Dog(最大独立点集)
Cat VS Dog Problem Description The zoo have N cats and M dogs, today there are P children visiting t ...
- HDU3829:Cat VS Dog(最大独立集)
Cat VS Dog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others)Total ...
- HDU 3829 Cat VS Dog / NBUT 1305 Cat VS Dog(二分图最大匹配)
HDU 3829 Cat VS Dog / NBUT 1305 Cat VS Dog(二分图最大匹配) Description The zoo have N cats and M dogs, toda ...
- Cat VS Dog
Cat VS Dog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others)Total ...
- HDU 3289 Cat VS Dog (二分匹配 求 最大独立集)
题意:每个人有喜欢的猫和不喜欢的狗.留下他喜欢的猫他就高心,否则不高心.问最后最多有几个人高心. 思路:二分图求最大匹配 #include<cstdio> #include<cstr ...
- (hdu step 6.3.7)Cat vs. Dog(当施工方规则:建边当观众和其他观众最喜爱的东西冲突,求最大独立集)
称号: Cat vs. Dog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- hdu 3829 Cat VS Dog 二分图匹配 最大点独立集
Cat VS Dog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others) Prob ...
- Cat VS Dog HDU - 3829 (最大独立集 )
Cat VS Dog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others)Total ...
随机推荐
- 《例说51单片机(C语言版)(第3版)》——1-3 认识MCS-51的存储器结构
本节书摘来异步社区<例说51单片机(C语言版)(第3版)>一书中的第1章,第1.3节,作者:张义和,王敏男,许宏昌,余春长,更多章节内容可以访问云栖社区"异步社区"公众 ...
- Eclipse中获取html jsp 标签的属性提示信息方法
操作方法: windows------preferences----------搜索 html----------找到 html Source这项---------找到 content assist ...
- 超轻量级网络SqueezeNet网络解读
SqueezeNet网络模型非常小,但分类精度接近AlexNet. 这里复习一下卷积层参数的计算 输入通道ci,核尺寸k,输出通道co,参数个数为: 以AlexNet第一个卷积为例,参数量达到:3*1 ...
- unittest(简介)
一.unittest框架介绍: unittest框架是python中的一个单元测试框架,该模块包括许多的类如 TestCase 类.TestSuite 类.TextTestRunner 类.TestR ...
- Jenkins 构建 Jmeter 项目之源代码管理(SVN)
1.查看项目创建中是否又 svn 插件,没有的话下载插件 subversion 2.配置 svn 源代码管理,如下图(testcases 目录下包含 build.xml 和脚本文件) 3.查看 Jen ...
- 自定义Element父子不关联的穿梭树
Element自身是有一个Transfer穿梭框组件的,这个组件是穿梭框结合checkbox复选框来实现的,功能比较单一,自己想实现这个功能也是很简单的,只是在项目开发中,项目排期紧,没有闲功夫来实现 ...
- Java——Spring常用jar包功能详解
很多小伙伴包括我自己,在使用spring的时候导入了一堆jar包,但是并不明白每个jar的用途,使用spring的不同功能时也不知该导入哪个jar包,今天记录一下spring各个jar包的含义,供大家 ...
- [Linux] Hexo 搭建个人博客
不做笔记出了bug就得重新再看一遍视频 视频来源: https://www.bilibili.com/video/BV1Yb411a7ty?t=75 安装 先安装 nodejs,npm, git 安装 ...
- 线段树 B数据结构 牛客练习赛28
链接:https://ac.nowcoder.com/acm/contest/200/B来源:牛客网 题目描述 qn姐姐最好了~ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, ...
- 最终父类【根类】:Object类&Objects类
一.java.lang.Object类 1.Object类介绍 Object类是所有类的父类.一个类都会直接或间接继承自该类: 该类中提供了一些非常常用的方法! 2.toString()方法 A: ...