
ACM_二分图
文章平均质量分 81
逍遥丶綦
这个作者很懒,什么都没留下…
展开
-
匈牙利最大匹配+大质数判定 csu1552 Friends
传送门:点击打开链接 题意:每个人都有一个数字,如果两个人的数字之和是质数,那么就可以成为朋友,一个人最多只能有一个朋友 思路:二分图裸匈牙利最大匹配和大质数判定的模板题,测试模板专用 #include #include #include #include #include #include #include #include #include #include #include #incl原创 2015-10-06 09:22:01 · 826 阅读 · 0 评论 -
二分图判定 hdu5285 wyh2000 and pupil
很明显要求一个二分图。先构图,然后用精典的点染色的方法,求出二分图中两个图的节点数量 因为整个图中有很多个通块,每个通块都做一次二分图 合并的时候,把每个二分图中节点多的那部分的数量累加,就得到了a答案 那么b就是总数减去a 这题本身不难,但是数据非常贱,题目要求每组中必须有一个人,且m可能为0 所以,要进行两个特判 n m==0时,没有任何限制,但是b组至少原创 2015-07-18 22:14:57 · 1672 阅读 · 0 评论 -
最大独立集 poj1466 Girls and Boys
传送门:点击打开链接 题意:男生可能和女生有喜欢的关系,现在要分组,使得组里面没有任何两个人有喜欢的关系 思路:裸最大独立集的题目,关于二分图,可以去看下另外一篇二分图总结的文章 #include #include #include #include #include #include #include #include #include #include #include #include原创 2016-03-09 00:16:39 · 754 阅读 · 0 评论 -
最小点覆盖 poj3041 Asteroids
传送门:点击打开链接 题意:给你一个地图,里面有一些x,现在可以对着横排或者竖排开枪,可以把整排的x都打掉,问要清理完整个地图的x,至少需要多少次操作。 思路:最经典的一道最小点覆盖问题,把行和列分别当作点,如果(i,j)是x,那么就把行i和列j对应的点连一条边 看了别人的代码好像都是连单向边,然后直接只用了n个点,说实话有点没看懂,,我只会用2*n个节点,然后连双向边这样搞。。 #inc原创 2016-03-12 00:46:22 · 707 阅读 · 0 评论 -
最小路径覆盖 poj1422 Air Raid
传送门:点击打开链接 题意:给一个DAG模型,要求最少的不相交的路径覆盖所有的点,即最小路径覆盖。 思路:最小路径覆盖通常把点拆成入点和出点,然后得到最大匹配数,答案就等于原点个数-最大匹配数 用二分图求最小路径覆盖的前提是,只能是DAG模型,不能有环! #include #include #include #include #include #include #include #incl原创 2016-03-12 00:58:51 · 775 阅读 · 0 评论 -
可重叠的最小路径覆盖 poj2594 Treasure Exploration
传送门:点击打开链接 题意:给一个DAG模型,求最小的路径覆盖,不过这里的路径是可以重叠的。 思路:我们用二分图求的最小路径覆盖的路径是不能有相交的。 所以我们先去遍历一遍DAG模型,对于u点,假如能通过有向边能到达v点,那么就在u和v中间连一条有向边。 对于这个新图我们再用经典的拆点法去跑最小路径覆盖,这题就算是做完了。 在通过DFS建立图的时候,要注意打标记,不然枚举量会非常大。原创 2016-03-12 01:24:43 · 820 阅读 · 1 评论 -
匈牙利最大匹配 poj2446 Chessboard
传送门:点击打开链接 题意:一个地图中,有一些障碍,然后有其他的空白位置,现在问是否能用1*2的骨牌覆盖所有的空白位置,骨牌不能有重叠。 思路:乍看有点像状压dp,又有点像搜索,但是正解是二分图的最大匹配,而且做起来特别简单。 首先,我们枚举每一个空白的点,枚举四个方向,如果相邻的格子也为空白的,那么就在两个格子之间连一条边,很容易证明,这样的连线方法一定是二分图。 因为所有的格子,能通过原创 2016-03-14 21:09:22 · 1017 阅读 · 0 评论 -
最小点覆盖 poj2226 Muddy Fields
传送门:点击打开链接 题意:给你个地图,里面有泥地和草坪,现在有宽为1的木板,长度可以任意,要求把所有的泥地全部覆盖掉,但是不能覆盖到草坪。泥地上多个木板可以重叠,问所需要的最小木板数。 思路:这道题和打枪那个经典题非常类似,我们可以从那道题入手。 我们来观察两道题的异同,发现那道题里面每一行是可以打到所有的点的,但是这里必须只能是打到连续的,所以我们能想到把行拆成多个行。 比如第一行有3原创 2016-03-15 12:38:06 · 1051 阅读 · 0 评论