
图论—二分图
文章平均质量分 74
My_ACM_Dream
生活没有彩排每天都是现场直播
展开
-
hdu 1083 Courses (最大边独立集)
题意: 有n个科目,m个学生,每个科目都有一些学生去学,但是现在每个科目只能有一个学生选择,是否每个科目都能有学生选上。 题解: 这题抽象就是求|最大边独立集|,|最大边独立集|=最大匹配数 #include #include #include #include #include #include #include #include #include #define B(x) (1<<(x原创 2015-04-05 15:13:59 · 507 阅读 · 0 评论 -
hdu 1045 Fire Net (二分图)
题意: 给出一个地图,问能放的最多炮的数量。同一行或列没有东西间隔的两个炮会达到对方。 题解: 对行和列分块,然后对应位置的快之间连边,就个构成了一个二分图。求最大的匹配。 #include #include #include #include #include #include #include #include #include #define B(x) (1<<(x)) using原创 2015-04-05 13:18:53 · 399 阅读 · 0 评论 -
hdu 1281 棋盘游戏 (最大匹配,重要点)
题意: 有一个棋盘,现在要现在要在上面放车,单同行或同列不能有1个以上的车,类似八皇后问题。现在问有几个重要点,重要点:假设车不放这个点会导致最多能放的车数量表少。 题解: 先得出最大匹配,然后暴力枚举删除的点,判断删除后最大匹配是否改变,是说明是重要点。 #include #include #include #include #include #include #include #inc原创 2015-04-05 16:07:43 · 571 阅读 · 0 评论 -
hdu 2444 The Accomodation of Students (判断二分图,二分图最大匹配)
题意: 给出一些学生的认识情况,比如A和B认识,B和C认识,但是A和C不一定认识。现在问能否将这些学生分成两个组,并且每组中的学生互相不认识,如果能分,求出最大能匹配的学生对数。 题解: 首先bfs判断是否是二分图,然后求二分最大匹配。 #include #include #include #include #include #include #include #include #incl原创 2015-04-05 14:38:48 · 450 阅读 · 0 评论 -
hdu 2819 Swap (二分图匹配)
题意: 给出一个矩阵,问能否通过行列的变换使得这个举证的对角线全是1。如果能,输出交换的步骤。 题解: 二分图匹配,分析发现其实仅仅只需交换行或者列就可以完成,我们根据行来连边,每行连上这行中是1对应的列,这样做二分图匹配就保证了一个行肯定值对应了一个列。得到匹配后,通过模拟变换的过程得到交换信息。 #include #include #include #include #include原创 2015-04-05 21:13:00 · 425 阅读 · 0 评论 -
poj 2289 Jamie's Contact Groups (二分图多重匹配)
题意: 大概就是说要把n个人分到m个个组中去,但是要求分组中人数最大的那个组的人数要尽量小。 题解: 我们二分枚举答案,然后通过多重匹配判断是否可行。 #include #include #include #include #include #include #include #include #include #define B(x) (1<<(x)) using namespace s原创 2015-04-06 16:07:22 · 666 阅读 · 0 评论 -
hdu 2389 Rain on your Parade (二分图,Hopcroft-Karp)
地图上一些人,一些伞,每个人都有一个速度,问最多能有多少人能在下雨之前躲到伞里面。雨将会在t分钟后来临。 #include #include #include #include #include #include #include #include #include #define B(x) (1<<(x)) using namespace std; typedef long long ll;原创 2015-04-06 12:30:55 · 489 阅读 · 0 评论 -
hdu 2255 奔小康赚大钱 (带权匹配)
模板题。用输入挂。 #include #include #include #include #include #include #include #include #include #define B(x) (1<<(x)) using namespace std; typedef long long ll; void cmax(int& a,int b){ if(b>a)a=b; } void原创 2015-04-09 20:39:14 · 570 阅读 · 0 评论