题目分析: 一个人要不是爱狗讨厌猫的人,要不就是爱猫讨厌狗的人.一个人喜欢的动物如果离开,那么他也将离开.问最多留下多少人. 思路: 爱猫和爱狗的人是两个独立的集合.若两个人喜欢和讨厌的动物是一样的,那么就建一条边.留下多少人,就是求最大独立集. 最大独立集= 顶点数 - 最大匹配数 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<qu…
Cat vs. Dog Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1422    Accepted Submission(s): 534 Problem Description The latest reality show has hit the TV: ``Cat vs. Dog''. In this show, a bunch…
Cat vs. Dog Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2279    Accepted Submission(s): 886 Problem Description  The latest reality show has hit the TV: ``Cat vs. Dog''. In this show, a bun…
<题目链接> 题目大意: 动物园有n条狗.m头猫.p个小孩,每一个小孩有一个喜欢的动物和讨厌的动物.如今动物园要转移一些动物.假设一个小孩喜欢的动物在,不喜欢的动物不在,他就会happy.问动物最多能使几个小孩happy. 解题分析: 因为本题不同的小孩之间喜好可能会产生冲突,所以,要使最多的小孩满意,不妨将这些冲突的小孩之间相互连线,然后求出不产生冲突的最大点集,于是本题就转化为了最大独立集问题.最大独立集=总点数-最大匹配数. #include <cstdio> #includ…
//这题逼我把匈牙利学了 之前一直很勤快敲网络流 而且不以为耻反以为荣 解:首先按行扫描编号,如果在同一块中(即可以相互攻击),那么将其标为相同的数组,对列也做同样的操作. 然后扫描整张图,如果行编号为a的块与列编号为b的块有公共点,那么将二部图中A集合中a点与B集合中b点相连.最后求出来最大二分匹配数就是答案. (为什么这样做)首先很明显的,二部图中每一条边就对应原图中的一个点,因此,匹配数=边数=最多可放置的战舰数,另外二分图每个点只能匹配一次,对应到原题中就是每一块只能放置一个战舰. #i…
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: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…
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…
题目链接:https://vjudge.net/problem/HDU-3829 Cat VS Dog Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others)Total Submission(s): 4118    Accepted Submission(s): 1493 Problem Description The zoo have N cats and M dogs, toda…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4370 题目大意:有一个n*n的矩阵Cij(1<=i,j<=n),要找到矩阵Xij(i<=1,j<=n)满足以下条件: 1.X 12+X 13+...X 1n=1  2.X 1n+X 2n+...X n-1n=1  3.for each i (1<i<n), satisfies ∑X ki (1<=k<=n)=∑X ij (1<=j<=n). 举个例子…
http://acm.hdu.edu.cn/showproblem.php?pid=3639 题意: 有一群孩子正在玩老鹰抓小鸡,由于想当老鹰的人不少,孩子们通过投票的方式产生,但是投票有这么一条规则:投票具有传递性,A支持B,B支持C,那么C获得2票(A.B共两票),输出最多能获得的票数是多少张和获得最多票数的人是谁? 思路: 先强连通缩点反向建图,在计算强连通的时候,需要保存每个连通分支的结点个数. 为什么要反向建图呢?因为要寻找票数最多的,那么肯定是入度为0的点,然后dfs计算它的子节点的…
题意:动物园有n只猫和m条狗,现在有p个小孩,他们有的喜欢猫,有的喜欢狗,其中喜欢猫的一定不喜欢狗,喜欢狗的一定不喜欢猫.现在管理员要从动物园中移除一些动物,如果一个小孩喜欢的动物留了下来而不喜欢的动物被移走,这个小孩会很高兴.现在问最多可以让多少个小孩高兴. 此题是求二分图最大独立集. 二分图比较明显,但是难在建图.这个题是找到最多的喜欢猫和喜欢狗而不互相冲突的小孩,这样我们将喜欢动物相互冲突的小孩之间连边,问题就变成了求二分图的最大独立集. 在二分图中,最大独立集=顶点数-最大匹配数. 求解…
题目大意: 有n只猫,有m只狗.现在有P个学生去参观动物园.每个孩子有喜欢的动物和不喜欢的动物.假如他喜欢猫那么他就一定不喜欢狗(反之亦然). 如果一个孩子喜欢一个动物,那么这个动物不会被移除,若是不喜欢则移除.现在管理员想知道移除哪些动物可以使最大数量的孩子高兴. 输入数据: 输入包含多组测试实例. 第一行是三个数字n, m, p. 接下来p行. 每行 CX, DX 代表他喜欢第X只猫,讨厌第X只狗(反之亦然)   题目思路: 构图思路:我们把所有人进行构图,如果两个人之间有矛盾就建立一条边.…
题意:P个小朋友,每个人有喜欢的动物和讨厌的动物.留下喜欢的动物并且拿掉讨厌的动物,这个小朋友就会开心.问最多有几个小朋友能开心. 分析:对于每个动物来说,可能既有人喜欢又有人讨厌,那么这样的动物实际上建立了一对矛盾关系,将其视作一条边,连接有矛盾的两个小朋友.但是这样连边的话,相当于一个小朋友拆成了两个点,重复的关系会被连两次,二分图的X部和Y部都是P个小朋友.根据这个规则建出的图,其最小点覆盖就是最后会不开心的小朋友的数量.而|最小点覆盖| = |最大匹配|,所以求出最大匹配后,再用顶点数-…
题意: p个人  每一个人有喜欢和讨厌的动物  假设选出的动物中包括这个人喜欢的动物同一时候不包括他讨厌的动物那么这个人会开心  问  最多几个人开心 思路: 二分图最大独立集  利用人与人之间的冲突建边  求最大匹配就可以 注意: 题中的例子给出动物的名字是D1.C1之类的  事实上名字可能比这个长-  所以数组开长点 代码: #include<cstdio> #include<iostream> #include<cstring> #include<strin…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3829 题目大意: 给定N个猫,M个狗,P个小朋友,每个小朋友都有喜欢或者不喜欢的某猫或者某狗 管理员从中删除一些猫狗,使得尽可能多的小朋友开心 思路: 假设A小朋友喜欢的猫是B小朋友所不喜欢的,或者说A不喜欢的狗是B喜欢的,那么说明两者之间存在矛盾关系 问题就是求出互相之间没有矛盾的小朋友的集合 那么就是点数-最大匹配数的问题了,就是读入数据有点麻烦 代码: #include <iostream>…
Description Rain has pummeled the cows' field, a rectangular grid of R rows and C columns (1 <= R <= 50, 1 <= C <= 50). While good for the grass, the rain makes some patches of bare earth quite muddy. The cows, being meticulous grazers, don't…
题面:洛谷传送门 BZOJ传送门 最大流神题 把点权转化为边权,切糕里每个点$(i,j,k)$向$(i,j,k+1)$连一条流量为$v(i,j,k)$的边 源点$S$向第$1$层的点连边,第$R+1$层的点向$T$连边,流量均为$inf$ 跑最大流,最大流的流量就是答案 因为每条纵轴都取了最小的$v$,被割掉的边就是最小的$v$所在的边 然而题目里还有限制,相邻两个纵轴取值的位置相差的距离不能超过$D$ 如何处理这个限制呢? 每个点$(i,j,k)$向$(x,y,k-D)$连流量为$inf$的边…
Problem Description Thanks to a certain "green" resources company, there is a new profitable industry of oil skimming. There are large slicks of crude oil floating in the Gulf of Mexico just waiting to be scooped up by enterprising oil barons. O…
题面 传送门 思路 引入:网络流? 看到这道题,第一想法是用一个dp来完成决策 但是,显然这道题的数据并不允许我们进行dp,尤其是有10000种志愿者的情况下 那么我们就要想别的办法来解决: 贪心?这道题做的决策除了价值以外还有覆盖面问题,而且更致命的是每一天的人数需求还不一样 那么题目限制如此多元化的题目,我们就一定要想到用那个传说中的万能算法--网络流 想到网络流以后,一个直观的想法就是源点连人,人连可以被雇佣的日子,日子连汇点,然后跑最小费用最大流 但是这样有一个问题:本题中的雇佣不是可以…
题目链接 题意 给定一张网格,格子中有些地方有柱子,有些柱子上面有蜥蜴. 每个柱子只能承受有限只蜥蜴从上面经过.每只蜥蜴每次能走到相距曼哈顿距离\(\leq k\)的格子中去. 问有多少只蜥蜴能走出网格. 分析 参考博文 拆点 因为这道题中的容量不是限制在边上,而是限制在点上的,所以可以考虑将一个点拆成两个点,中间再加一条边,边的容量即为原先点上的值. 想法很重要. 建图 对于起始有蜥蜴的点,从源点\(s\)连一条容量为\(1\)的边到它: 对于中间点,拆成两点:点\(1\)到点\(2\)的容量…
Problem Description Your platoon of wandering lizards has entered a strange room in the labyrinth you are exploring. As you are looking around for hidden treasures, one of the rookies steps on an innocent-looking stone and the room's floor suddenly d…
http://acm.hdu.edu.cn/showproblem.php?pid=4725 The Shortest Path in Nya Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7869    Accepted Submission(s): 1766 Problem Description This is a v…
Problem Description Bessie and her friend Elsie decide to have a meeting. However, after Farmer John decorated hisfences they were separated into different blocks. John's farm are divided into n blocks labelled from 1 to n.Bessie lives in the first b…
称号: Cat vs. Dog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 219 Accepted Submission(s): 86   Problem Description The latest reality show has hit the TV: ``Cat vs. Dog''. In this show, a bunch…
Cat VS Dog Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others)Total Submission(s): 4383    Accepted Submission(s): 1602 Problem Description The zoo have N cats and M dogs, today there are P children visiting the zoo,…
Cat VS Dog Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others)Total Submission(s): 4751    Accepted Submission(s): 1757 Description: The zoo have N cats and M dogs, today there are P children visiting the zoo, each ch…
Cat VS Dog 题意:一群小朋友去动物园,如果每个小朋友喜欢的动物是猫,那么不喜欢的动物一定是狗,反之也是.现在动物园的管理者要拿走一些动物,如果拿走的是某个小朋友不喜欢的动物,那这个小朋友就非常开心,反之,如果是某个小朋友喜欢的动物,这个小朋友就非常的不开心,问那完后最多有几个小朋友会非常开心. 暑假最后一场个人赛,可还行,有点凉凉~~ 讲真看出是二分图最大匹配的题目,但是没学最大独立集,死活建不出图来,就到底还是自己的能力不行啊! 最小覆盖: 定义:假如选了一个点就相当于覆盖了以它为端…
Cat VS Dog Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others)Total Submission(s): 2046    Accepted Submission(s): 719 Problem DescriptionThe zoo have N cats and M dogs, today there are P children visiting the zoo, ea…