![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
图论 —— 二分图最大匹配、二分图多重匹配、二分图最大权匹配
图论 —— 二分图最大匹配、二分图多重匹配、二分图最大权匹配
c4Lnn
这个作者很懒,什么都没留下…
展开
-
LibreOJ 6226.「网络流 24 题」骑士共存问题
链接https://loj.ac/p/6226题意在一个 n∗nn*nn∗n 个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示。棋盘上某些方格设置了障碍,骑士不得进入。对于给定的 n∗nn*nn∗n 个方格的国际象棋棋盘和障碍标志,计算棋盘上最多可以放置多少个骑士,使得它们彼此互不攻击。思路二分图最大独立集模拟一下可以发现棋盘可以根据行列和的奇偶性染色然后求出最大匹配,二分图最大独立集 = 点数 - 最大匹配代码#include <bits/stdc++.h>原创 2021-02-19 20:40:26 · 233 阅读 · 0 评论 -
POJ 3189. Steady Cow Assignment
链接http://poj.org/problem?id=3189题意将 nnn 头牛分配给 mmm 个谷仓,每个谷仓容量不同,给出每头牛对于 mmm 个谷仓喜欢程度的排名求最小区间(选择的最大喜欢程度的排名 - 最小喜欢程度的排名)思路二分图多重匹配设 l=r=1l=r=1l=r=1如果当前区间匹配成功 l++如果当前区间匹配失败 r++代码#include <cstdio>#include <iostream>#include <algorithm&原创 2020-09-25 18:23:25 · 100 阅读 · 0 评论 -
LightOJ 1356. Prime Independence
链接http://lightoj.com/volume_showproblem.php?problem=1356题意给出 nnn 个数,找出一个最大质数独立子集,如果 a=b∗a=b*a=b∗ 一个质数,那么认为 aaa 是 bbb 的一个质数乘级,如果一个集合不存在一个数是另一个数的质数乘级,那么这就是质数独立子集思路本题难点在于二分图建图记 totitot_itoti 为 iii 的质因子个数,p1,p2,p3p_1,p_2,p_3p1,p2,p3 为质数若 a∗p1=b∗p2=c原创 2020-12-01 22:39:24 · 190 阅读 · 0 评论 -
HDU 2768. Cat vs. Dog
链接http://acm.hdu.edu.cn/showproblem.php?pid=2768题意n个观众,每个观众都是一个爱猫的人(即讨厌狗)或一个爱狗的人(即一个讨厌猫)每个观众可以投票决定两件事:一只宠物保留,一只宠物扔掉挑选留下来的宠物,以便最大限度地满足观众思路将每个观众和与其矛盾的观众连线,求二分图最大独立集代码#include <bits/stdc++.h>#define SZ(x) (int)(x).size()#define ALL(x) (x).beg原创 2020-09-26 22:19:32 · 175 阅读 · 0 评论 -
POJ 2226. Muddy Fields
链接http://poj.org/problem?id=1325题意A,BA,BA,B 两台机器,每台机器各有 mmm 种模式,一开始两台机器都在各自的模式 000现在有 nnn 个任务,可以任意顺序执行,aia_iai 表示任务 iii 在 AAA 上执行,需要设置模式为 aia_iai,bib_ibi 表示任务 iii 在 bbb 上执行,需要设置模式为 bib_ibi每台机器转换一次模式需重启一次,求最小重启次数思路代码#include <cstdio>#incl原创 2020-09-18 22:25:15 · 85 阅读 · 0 评论 -
HDU 4185. Oil Skimming
链接http://acm.hdu.edu.cn/showproblem.php?pid=4185题意n∗nn*nn∗n 的 010101 矩阵中覆盖最多的 1∗21*21∗2 的只包含 111 的块,每个点只能在一个块中思路判断右和下是否能和当前点构成 1∗21*21∗2 的块,能则在两点间连边建完图后,易发现这是个二分图,跑二分图最大匹配代码#include <bits/stdc++.h>#define SZ(x) (int)(x).size()#define ALL(x)原创 2020-09-14 12:00:21 · 63 阅读 · 0 评论 -
HDU 2819. Swap
链接http://acm.hdu.edu.cn/showproblem.php?pid=2819题意n∗nn*nn∗n 的 010101 矩阵,任意交换两行或两列,可交换无限次,问是否可使矩阵对角线上都为 111,输出交换方案思路代码#include <bits/stdc++.h>#define SZ(x) (int)(x).size()#define ALL(x) (x).begin(),(x).end()#define PB push_back#define EB emp原创 2020-09-14 11:50:01 · 84 阅读 · 0 评论 -
HDU 1281. 棋盘游戏
链接http://acm.hdu.edu.cn/showproblem.php?pid=1281题意对一个N*M的棋盘,在格子里放尽量多国际象棋里的“车”,并且使得他们不能互相攻击,但是限制了只有某些格子才可以放某些格子若不放子,就无法保证放尽量多的“车”,这样的格子被称做重要点求有多少个这样的重要点思路先对行列做二分图最大匹配每次删除一条匹配边,重新匹配,判断匹配数是否小于原本匹配数代码#include <bits/stdc++.h>#define SZ(x) (int)原创 2020-09-12 13:16:26 · 89 阅读 · 0 评论 -
NC 51274. 导弹防御塔
链接https://ac.nowcoder.com/acm/problem/51274题意思路代码#include <bits/stdc++.h>#define SZ(x) (int)(x).size()#define ALL(x) (x).begin(),(x).end()#define PB push_back#define EB emplace_back#define MP make_pair#define FI first#define SE secondusi原创 2020-09-10 20:25:57 · 130 阅读 · 0 评论 -
HDU 1045. Fire Net
链接http://acm.hdu.edu.cn/showproblem.php?pid=1045题意在 n∗nn*nn∗n 的图上有一些围墙,放置一些大炮,大炮能攻击上下左右任何距离的其他大炮,但不能穿过围墙,求最多能放多少个互相不会攻击的大炮思路按行对每个连通块染色,然后按列对每个连通块染色对每个点所在的行连通块与列连通块之前连边跑二分图最大匹配代码#include <bits/stdc++.h>#define SZ(x) (int)(x).size()#define A原创 2020-09-10 17:06:21 · 68 阅读 · 0 评论 -
NC 51272. 棋盘覆盖
链接https://ac.nowcoder.com/acm/contest/1062/B题意n∗nn*nn∗n 的棋盘上,有m个点被删除了,求棋盘能被多少个1∗21*21∗2 的多米诺骨牌进行掩盖思路每个点只能被一个骨牌覆盖,所以每个点只能和一个点匹配对于每个点,判断其相邻的点是否合法,合法则连边,表示可以和其匹配建完图跑二分图最大匹配代码#include <bits/stdc++.h>#define SZ(x) (int)(x).size()#define ALL(x)原创 2020-09-09 17:12:45 · 90 阅读 · 0 评论 -
HDU 4685. Prince and Princess
链接http://acm.hdu.edu.cn/showproblem.php?pid=4685题意nnn 个王子,mmm 个公主,每个王子可以娶他喜欢的公主中的一个,每个公主只能嫁个一个王子,必须保证最大匹配,升序输出每个王子可以娶的公主的编号思路先求二分图最大匹配,给两边未匹配的点添加虚点凑成完美匹配(虚点与另一边所有点之间都要加一条有向边)然后在所有匹配的两点之间加一条反向边最后求强连通分量,每个强连通分量中与王子直接相连的公主就是他可以娶的公主代码#include<bits/原创 2020-09-02 13:26:25 · 121 阅读 · 0 评论