hdu 3829 Cat VS Dog 二分匹配 最大独立点集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3829
题目大意:
给定N个猫,M个狗,P个小朋友,每个小朋友都有喜欢或者不喜欢的某猫或者某狗
管理员从中删除一些猫狗,使得尽可能多的小朋友开心
思路:
假设A小朋友喜欢的猫是B小朋友所不喜欢的,或者说A不喜欢的狗是B喜欢的,那么说明两者之间存在矛盾关系
问题就是求出互相之间没有矛盾的小朋友的集合
那么就是点数-最大匹配数的问题了,就是读入数据有点麻烦
代码:
#include <iostream>
#include <string>
#include <map>
#include <stdio.h>
#include <string.h>
using namespace std;
const int maxn=;
int N,M,P,c_cnt,d_cnt;
int g[maxn][maxn],vis[maxn],who[maxn];
struct node {
int data[][];//[0][]like [1][]don't like
} ans[maxn];
map<string,int> c,d;
map<string,int>::iterator it;
string s;
void rs(int i,int dir) {
if(s[]=='C') {
if(!c.count(s)) c.insert(pair<string,int>(s,c_cnt++));
it=c.find(s);
ans[i].data[dir][it->second]=;
} else {
if(!d.count(s)) d.insert(pair<string,int>(s,d_cnt++));
it=d.find(s);
ans[i].data[dir][it->second]=;
}
}
void read() {
memset(g,,sizeof(g));
memset(who,,sizeof(who));
memset(ans,,sizeof(ans));
c.clear();
d.clear();
c_cnt=;
d_cnt=;
for(int i=; i<=P; ++i) {
cin>>s;//like
int dir=;
rs(i,dir);
cin>>s;//don't like
dir^=;
rs(i,dir);
}
for(int i=; i<=P; ++i)
for(int j=i+; j<=P; ++j)
for(int k=; k<=; ++k)
if((ans[i].data[][k]==&&ans[j].data[][k]==)||(ans[i].data[][k]==&&ans[j].data[][k]==))
g[i][j]=g[j][i]=;
}
bool Find(int x) {
for(int i=; i<=P; ++i) {
if(g[x][i]&&!vis[i]) {
vis[i]=;
if(!who[i]||Find(who[i])) {
who[i]=x;
return true;
}
}
}
return false;
}
void slove() {
int sum=;
for(int i=; i<=P; ++i) {
memset(vis,,sizeof(vis));
if(Find(i)) sum++;
}
cout<<P-sum/<<endl;
}
int main() {
while(cin>>N>>M>>P) {
read();
slove();
}
return ;
}
hdu 3829 Cat VS Dog 二分匹配 最大独立点集的更多相关文章
- hdu 3829 Cat VS Dog 二分图匹配 最大点独立集
Cat VS Dog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others) Prob ...
- hdu 2768 Cat vs. Dog (二分匹配)
Cat vs. Dog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 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 ...
- HDU 3829——Cat VS Dog——————【最大独立集】
Cat VS Dog Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit S ...
- HDU 3829 Cat VS Dog (最大独立集)【二分图匹配】
<题目链接> 题目大意: 动物园有n条狗.m头猫.p个小孩,每一个小孩有一个喜欢的动物和讨厌的动物.如今动物园要转移一些动物.假设一个小孩喜欢的动物在,不喜欢的动物不在,他就会happy. ...
- HDU 3829 - Cat VS Dog (二分图最大独立集)
题意:动物园有n只猫和m条狗,现在有p个小孩,他们有的喜欢猫,有的喜欢狗,其中喜欢猫的一定不喜欢狗,喜欢狗的一定不喜欢猫.现在管理员要从动物园中移除一些动物,如果一个小孩喜欢的动物留了下来而不喜欢的动 ...
- HDU 3829 Cat VS Dog(最大独立集)
题目大意: 有n只猫,有m只狗.现在有P个学生去参观动物园.每个孩子有喜欢的动物和不喜欢的动物.假如他喜欢猫那么他就一定不喜欢狗(反之亦然). 如果一个孩子喜欢一个动物,那么这个动物不会被移除,若是不 ...
- HDU 3829 Cat VS Dog
题意: p个人 每一个人有喜欢和讨厌的动物 假设选出的动物中包括这个人喜欢的动物同一时候不包括他讨厌的动物那么这个人会开心 问 最多几个人开心 思路: 二分图最大独立集 利用人与人之间的冲突 ...
- HDU - 3829 Cat VS Dog (二分图最大独立集)
题意:P个小朋友,每个人有喜欢的动物和讨厌的动物.留下喜欢的动物并且拿掉讨厌的动物,这个小朋友就会开心.问最多有几个小朋友能开心. 分析:对于每个动物来说,可能既有人喜欢又有人讨厌,那么这样的动物实际 ...
随机推荐
- onclick事件触发 input type=“file” 上传文件
添加按钮: <input type="button" name="button" value="浏览" onclick="j ...
- LeetCode 292. Nim Game (取物游戏)
You are playing the following Nim Game with your friend: There is a heap of stones on the table, eac ...
- Python Web框架篇:Django Form组件
Form简介 在HTTP中,表单(form标签),是用来提交数据的,其action属性说明了其传输数据的方法:如何传.如何接收. 访问网站时,表单可以实现客户端与服务器之间的通信.例如查询,就用到了表 ...
- ajax+php(环境搭建+测试)
在学习JavaScript,jQuery的ajax部分的时候,一直不明白要如何进行,不知道服务器要怎么弄,什么都不知道,当初在学ajax的时候,除了看一下ajax的内容,实践极少,因为,不知道要怎么做 ...
- FPM定制RPM包实践
1.1 快速部署方案 ✔ 问题:当领导给你 100 台已经安装好系统的服务器,然后让优化,让你提出一个快速部署方案. 解答: 1.tar 打包 先编译安装 打包-->分发-->解包(比如 ...
- windows 上rsync客户端使用方法
1.1 获取 windows上实现rsync的软件(cwRsync) cwRsync是Windows 客户端GUI的一个包含Rsync的包装.您可以使用cwRsync快速远程文件备份和同步. 1.1. ...
- Python中编码问题:u'\xe6\x97\xa0\xe5\x90\x8d' 类型的转为utf-8的解决办法
相信小伙伴们遇到过类似这样的问题,python2中各种头疼的转码,类似u'\xe6\x97\xa0\xe5\x90\x8d' 的编码,直接s.decode()是无法解决编码问题.尝试了无数办法,都无法 ...
- Flex中宽度计算
flex 有三个属性值,分别是 flex-grow, flex-shrink, flex-basis,默认值是 0 1 auto. 发现网上详细介绍他们的文章比较少, 今天就详细说说他们,先一个一个看 ...
- backface-visibility 3D修复
backface-visibility 是作用于 3D transform 时候 默认是 backface-visibility: hidden; 当一个元素3D变换的时候,会立即看到背 ...
- 数据库集群 MySQL主从复制
MySQL主从复制 本节内容我们联系使用MySQL的主从复制功能配置Master和Slave节点,验证数据MySQL的数据同步功能. 因为要使用多个MySQL数据库,所以不建议在电脑上安装多个MySQ ...