<题目链接> 题目大意: 动物园有n条狗.m头猫.p个小孩,每一个小孩有一个喜欢的动物和讨厌的动物.如今动物园要转移一些动物.假设一个小孩喜欢的动物在,不喜欢的动物不在,他就会happy.问动物最多能使几个小孩happy. 解题分析: 因为本题不同的小孩之间喜好可能会产生冲突,所以,要使最多的小孩满意,不妨将这些冲突的小孩之间相互连线,然后求出不产生冲突的最大点集,于是本题就转化为了最大独立集问题.最大独立集=总点数-最大匹配数. #include <cstdio> #includ…
题意:动物园有n只猫和m条狗,现在有p个小孩,他们有的喜欢猫,有的喜欢狗,其中喜欢猫的一定不喜欢狗,喜欢狗的一定不喜欢猫.现在管理员要从动物园中移除一些动物,如果一个小孩喜欢的动物留了下来而不喜欢的动物被移走,这个小孩会很高兴.现在问最多可以让多少个小孩高兴. 此题是求二分图最大独立集. 二分图比较明显,但是难在建图.这个题是找到最多的喜欢猫和喜欢狗而不互相冲突的小孩,这样我们将喜欢动物相互冲突的小孩之间连边,问题就变成了求二分图的最大独立集. 在二分图中,最大独立集=顶点数-最大匹配数. 求解…
HDU 3829 Cat VS Dog / NBUT 1305 Cat VS Dog(二分图最大匹配) Description The zoo have N cats and M dogs, today there are P children visiting the zoo, each child has a like-animal and a dislike-animal, if the child's like-animal is a cat, then his/hers dislike…
Cat VS Dog Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others) Problem Description The zoo have N cats and M dogs, today there are P children visiting the zoo, each child has a like-animal and a dislike-animal, if the…
Cat VS Dog Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 3829 Description The zoo have N cats and M dogs, today there are P children visiting the zoo, each child has a like-animal and a dislik…
题意:每个人有喜欢的猫和不喜欢的狗.留下他喜欢的猫他就高心,否则不高心.问最后最多有几个人高心. 思路:二分图求最大匹配 #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<cstdlib> #include<string> #include<cmath> #include<vector> #def…
题目大意: 有n只猫,有m只狗.现在有P个学生去参观动物园.每个孩子有喜欢的动物和不喜欢的动物.假如他喜欢猫那么他就一定不喜欢狗(反之亦然). 如果一个孩子喜欢一个动物,那么这个动物不会被移除,若是不喜欢则移除.现在管理员想知道移除哪些动物可以使最大数量的孩子高兴. 输入数据: 输入包含多组测试实例. 第一行是三个数字n, m, p. 接下来p行. 每行 CX, DX 代表他喜欢第X只猫,讨厌第X只狗(反之亦然)   题目思路: 构图思路:我们把所有人进行构图,如果两个人之间有矛盾就建立一条边.…
题意:P个小朋友,每个人有喜欢的动物和讨厌的动物.留下喜欢的动物并且拿掉讨厌的动物,这个小朋友就会开心.问最多有几个小朋友能开心. 分析:对于每个动物来说,可能既有人喜欢又有人讨厌,那么这样的动物实际上建立了一对矛盾关系,将其视作一条边,连接有矛盾的两个小朋友.但是这样连边的话,相当于一个小朋友拆成了两个点,重复的关系会被连两次,二分图的X部和Y部都是P个小朋友.根据这个规则建出的图,其最小点覆盖就是最后会不开心的小朋友的数量.而|最小点覆盖| = |最大匹配|,所以求出最大匹配后,再用顶点数-…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3829 题目大意: 给定N个猫,M个狗,P个小朋友,每个小朋友都有喜欢或者不喜欢的某猫或者某狗 管理员从中删除一些猫狗,使得尽可能多的小朋友开心 思路: 假设A小朋友喜欢的猫是B小朋友所不喜欢的,或者说A不喜欢的狗是B喜欢的,那么说明两者之间存在矛盾关系 问题就是求出互相之间没有矛盾的小朋友的集合 那么就是点数-最大匹配数的问题了,就是读入数据有点麻烦 代码: #include <iostream>…
题意: p个人  每一个人有喜欢和讨厌的动物  假设选出的动物中包括这个人喜欢的动物同一时候不包括他讨厌的动物那么这个人会开心  问  最多几个人开心 思路: 二分图最大独立集  利用人与人之间的冲突建边  求最大匹配就可以 注意: 题中的例子给出动物的名字是D1.C1之类的  事实上名字可能比这个长-  所以数组开长点 代码: #include<cstdio> #include<iostream> #include<cstring> #include<strin…