![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分图
Start_to_crazy
这个作者很懒,什么都没留下…
展开
-
kuangbin专题十 HDU1045(二分图orDFS)
题意: 给你一幅图,‘#’代表墙,’.’表示可以行走,现在要在’.’上放置大炮,放置了大炮的这些点的上下左右不能再放其他大炮,除非有墙隔着,问最多可以放多少个这样的点。 题解: 这道题可以用DFS和二分图来做,DFS。。感觉自己像个智障一样,简单的DFS都写不出来,明明BFS那么熟练了。。为什么一到DFS像个傻子呢,哎。这道题的DFS类似于八皇后问题,额。。还是来说一下二分图吧原创 2018-01-11 14:55:19 · 252 阅读 · 0 评论 -
HDU 1853 (二分图最优匹配+判断有向环覆盖)
题意: 有n个节点,m条有权单向路,要求用一个或者多个环覆盖住所有的节点。每个节点只能出现在一个环中,每个环中至少有两个节点。问最小边权花费为多少? 题解: 跟我之前做的那道HDU3488一样,只是这道题需要判断不能成环的情况,然后,就出问题了,因为我用的INF是0x3f3f3f3f,然后不成环的话,会加上INF,然后就会出现爆int的情况,所以用0xfffffff就安全了,原创 2018-01-13 23:17:38 · 210 阅读 · 0 评论 -
kuangbin专题十 HDU3488 (二分图最优匹配+有向环覆盖)
题意: 有n个节点,m条有权单向路,要求用一个或者多个环覆盖住所有的节点。每个节点只能出现在一个环中,每个环中至少有两个节点。问最小边权花费为多少? 题解: 听说这道题可以用最优匹配去做,看了一下要求最小权值,那么肯定是边取负数进图,得出的值再取反就行了,这里还有个坑点就是,重边。。。MD。至于为什么可以用最优匹配来做有向环覆盖呢?你可以想一下,一个有向环图每个点是不是都有一个原创 2018-01-13 23:05:12 · 248 阅读 · 0 评论 -
kuangbin专题十 HDU2255 KM算法模板
题解: KM算法的模板题,主要学习的两个博客为: 第一个是看他解说KM算法: https://www.cnblogs.com/Lanly/p/6291214.html 第二个是看他的代码和模拟: https://www.cnblogs.com/wenruo/p/5264235.html不多说了,我感觉我来说还不如你们看上面两个更好。/*KM算法 O(nx*nx*ny) 求最大权原创 2018-01-13 18:57:51 · 324 阅读 · 0 评论 -
kuangbin专题十 POJ2594 (最小路径覆盖 + Floyd)
题意: 在火星上有n个点需要机器人去探险,有m条单向路径。问至少需要几个机器人才能遍历完所有的点,一个点可能会被多个机器人经过。 题解: 一开始以为是个求最小路径覆盖的,直接上去敲完模板就交了结果WA了,百思不得解,却发现了一个叫传递闭包的神奇玩意,原来是因为,一个点可以被多个机器人经过(这就是和单纯的最小路径覆盖的区别)。例如1->2,2->3,4->2,2->5,看起来是四原创 2018-01-12 18:56:39 · 212 阅读 · 0 评论 -
kuangbin专题十 HDU3829 二分图+最大独立集
题意: 动物园有N只猫,M只狗,P个小孩。每个小孩都有自己喜欢的动物和讨厌的动物,如果他喜欢狗,那么就讨厌猫, 如果他讨厌猫,那么他就喜欢狗。当他喜欢的动物留在动物园和讨厌的动物不在动物园里面,小朋友就开心。 现让管理员通过带走某些动物,问最多能使多少个孩子开心。 题解: 最大独立集=顶点数-最大匹配数(最小顶点覆盖)。一开始想着猫和狗联系上,但是发现不对劲,于是想了很原创 2018-01-12 18:21:32 · 215 阅读 · 0 评论 -
kuangbin专题十 HDU1151 Air Raid (最小路径覆盖)
题意: 一个城镇中有n个十字路口和m条单向的路,图是无环图,现在要派一些伞兵去这些空袭,要到达所有的路口,每个在一个十字路口着陆了的伞兵可以沿着街去到其他路口, 我们的任务就是求出去执行任务的伞兵最少可以派几个。 题解: 其实就是求最小路径覆盖。 最小路径覆盖=顶点数-最大匹配数#include<stdio.h>#include<string.h>#includ原创 2018-01-12 13:44:33 · 230 阅读 · 0 评论 -
kuangbin专题十 HDU1054 Strategic Game(最小点覆盖)
题意: 找出最少的点,使得所有的边都被覆盖。 题解: 在做这道题之前了解一下概念: 顶点覆盖: 在顶点集合中,选取一部分顶点,这些顶点能够把所有的边都覆盖了。这些点就是顶点覆盖集。 最小顶点覆盖: 在所有的顶点覆盖集中,顶点数最小的那个叫最小顶点集合。 最小点覆盖=最大匹配数 因为题目要我们求找出最小的点可以把所有边都覆盖,那么我们就可以根据最小点覆盖的概原创 2018-01-12 11:02:20 · 172 阅读 · 0 评论 -
kuangbin专题十 HDU4185 Oil Skimming(二分图+建图)
题意: 有一个n*n的油田,里面有水和油,大小为1,一个土豪可以用1*2大小方块的勺子把油田覆盖,但是不能有水。问你要最大可以用多少个勺子覆盖油田。 题解: 匈牙利算法模板题,难就难在建图,ORZ感觉自己好笨,老是想着该怎么让点跟行或者列有关系,殊不知是让点跟点产生联系,md感觉自己好笨,就是查看‘#’的上下左右是否有’#’然后建图就行了。#include<stdio.h>#原创 2018-01-12 08:21:21 · 330 阅读 · 0 评论 -
kuangbin专题十 HDU2389(Hopcroft-Carp的算法模板)
题意: 第一行T表示多少组数,第二行t代表还有多少时间开始下雨,然后是 N个访客,接下来N行是 每个访客的位置(x1,y1)和他的移动速度,接下来M行 代表雨伞数目,接下来M行表示各个雨伞的位置(x2,y2),问在下雨前 最多有多少人能够拿到雨伞(两个人不能共用一把伞)。 题解: 我用匈牙利跑的结果超时了,然后看题解才知道这道题是Hopcroft-Carp算法的模板题,然后就跑原创 2018-01-11 23:57:00 · 699 阅读 · 0 评论 -
kuangbin专题十 HDU2819Swap(二分图匹配+矩阵变换)
题意: 给你一个n阶矩阵,问你能不能通过变换行列式来达到主对角行全为1的情况。可以输出要变换的次数和具体的变换情况,不可以的话就输出-1。 题解: 可以用匈牙利算法算出能不能满足对角线全为1的情况,即是匹配数是否为n即可,然后难点就在于怎么变换了。现在再来说一下匈牙利匹配的时候得出的结果数组吧,这个数组在这里的含义相当于第几列与第几列进行交换的意思,那么我们就可以在匹配完之后找原创 2018-01-11 21:16:49 · 227 阅读 · 0 评论 -
kuangbin专题十 HDU1083 匈牙利算法模板题
题意: 有p门的课,n个学生,每门课都有若干学生,现在要为每个课程分配一名课代表,每个学生只能担任一门课的课代表,如果每个课都能找到课代表,则输出”YES”,否则”NO”。 题解: 匈牙利模板题,套上去就可以过了,WA了两发是因为我我把P错写成CX组了。应该是CY组,因为我把学生当是CX,课目当是CY。不多说,上模板。 另外要提一下匈牙利算法的时间复杂度: 时间复杂度邻接原创 2018-01-11 18:22:54 · 258 阅读 · 0 评论 -
kuangbin专题十 HDU1281(二分图匹配,查找关键点)
题意: 中文题,但是我一开始理解不了,知道看了别人说的才理解。。。突然发现自己看有道翻译的理解能力强的一笔,导致我语文能力直白翻译能力直线下降。。。ORZ 题解: 其实是这样问你的如果删除了某个可以放车的点的从而造成了达不到最大匹配数的点有多少个,这样你是不是理解了?那么怎么做呢,暴力枚举,删除一条边之后进行二分图匹配,然后查看得到的匹配数是否少于最大匹配数即可。#includ原创 2018-01-11 18:59:41 · 240 阅读 · 0 评论 -
kuangbin专题十 HDU2444 二分图判断+匈牙利算法
题意: 有n个学生,有m对人是认识的,每一对认识的人能分到一间房,问能否先把n个学生分成两部分,每部分内的学生互不认识,而两部分之间的学生认识。如果可以分成两部分,就算出房间最多需要多少间,否则就输出No。 题解: 判断是否为二分图可以用BFS染色法来进行判断,相邻的两个点间染不同的颜色,如果遇到相邻的点是同一颜色的,则不是二分图,然后就是直接套匈牙利算法模板就可以了,最后结果原创 2018-01-11 15:58:44 · 319 阅读 · 0 评论 -
kuangbin专题十 POJ3020 Antenna Placement(求最小路径覆盖)
题意: 给你长为H,宽为W的图,*代表城市,o代表空地。要建立信号站,信号站能覆盖两个城市,信号站驻扎的城市算是一个,还有一个可以选择上下左右一个城市。问你最小要弄多少个信号站。 题解: 因为做过了HDU4185所以一下子想到了城市和城市建图,然后就满怀欢喜的上了匈牙利,发现结果不对,握草!怎么回事,然后看了别人的说法是,这道题是要求最小路径覆盖。这玩意是什么鬼呢? 路径覆原创 2018-01-12 10:16:12 · 198 阅读 · 0 评论