二分图
酷酷的Herio
这个作者很懒,什么都没留下…
展开
-
P7368 [USACO05NOV]Asteroids G(二分图最大独立集)
P7368 [USACO05NOV]Asteroids G(二分图最大独立集)比较经典的二分图最大独立集建模问题。code// Problem: P7368 [USACO05NOV]Asteroids G// Contest: Luogu// URL: https://www.luogu.com.cn/problem/P7368// Memory Limit: 256 MB// Time Limit: 1000 ms// Date: 2021-07-06 09:21:47// ------原创 2021-07-06 09:30:35 · 264 阅读 · 0 评论 -
P3033 [USACO11NOV]Cow Steeplechase G(二分图最大独立集)
P3033 [USACO11NOV]Cow Steeplechase G(二分图最大独立集)将有冲突的线段建边,则题目变成求二分图的最大独立集。最大独立集=结点数-最大匹配。最小点覆盖=最大匹配。采用匈牙利算法即可。时间复杂度:O(nm)O(nm)O(nm)采用bitset 来表示vis数组 会更快。code// Problem: P3033 [USACO11NOV]Cow Steeplechase G// Contest: Luogu// URL: https://www.luogu.原创 2021-07-06 09:18:21 · 306 阅读 · 0 评论 -
P2071 座位安排(二分图最大匹配)
P2071 座位安排(二分图最大匹配)照着模板的套路,只不过座位是可以匹配两个人的,所以开个二维数组即可。匈牙利常见的优化,vis数组能用bool就用bool,貌似用bitset更快?,建图的话单向边就可以了。code// Problem: P2071 座位安排// Contest: Luogu// URL: https://www.luogu.com.cn/problem/P2071// Memory Limit: 125 MB// Time Limit: 1000 ms// Date:原创 2021-07-05 22:03:20 · 295 阅读 · 0 评论 -
P1640 [SCOI2010]连续攻击游戏(二分图最大匹配)
P1640 [SCOI2010]连续攻击游戏(二分图最大匹配)二分图最大匹配问题,限制是需要匹配的属性值连续。维护一个当前数字nownownow,同时vis不用再每次memst,而是与now比较。当不能找到匹配时直接break。code// Problem: P1640 [SCOI2010]连续攻击游戏// Contest: Luogu// URL: https://www.luogu.com.cn/problem/P1640// Memory Limit: 125 MB// Time L原创 2021-07-05 21:26:05 · 293 阅读 · 0 评论 -
P1155 [NOIP2008 提高组] 双栈排序(二分图)
P1155 [NOIP2008 提高组] 双栈排序(二分图)大佬的题解,大概看懂了。因为i<j,a[i]>a[j]i<j,a[i]>a[j]i<j,a[i]>a[j],所以必须用一个栈暂存a[i]a[i]a[i],不然a[i]a[i]a[i]比a[j]a[j]a[j]先进栈,但是要求a[i]a[i]a[i]比a[j]a[j]a[j]先出栈,所以不能满足。然后三个的话,首先i<k,a[i]>a[k]i<k,a[i]>a[k]i<k,a[原创 2021-07-05 00:34:20 · 303 阅读 · 0 评论 -
二分图和一般图的最大匹配复习
二分图和一般图的最大匹配复习前言:可能有许多地方不严谨,仅供参考。二分图二分图的定义通俗来讲就是一个图G<V,E>G<V,E>G<V,E>的一个子图G′G'G′中的点分成两个集合A,BA,BA,B,子图G′G'G′的所有边都是连接两个不同集合的点,且每条边不会连重复的点。增广路就是一条从未匹配边出发结束与未匹配边的路径,按照(未匹配边-匹配边-未匹配边-未匹配边…)。我们令起点是黑点,与黑点相连的是白点,显然终点必然是黑点。注意到增广路的未匹配边比匹配边多原创 2021-01-18 19:14:51 · 308 阅读 · 0 评论 -
LC.785. 判断二分图
LC.785. 判断二分图原来写的都是假的染色法。本题WAWAWA点:可能有孤立点,如果从该点bfsbfsbfs就会出现直接返回truetruetrue,而其他点又不能组成二分图。另外本题可能存在不止一个二分图,所以将每个未染色点的bfsbfsbfs一下。class Solution {public: int col[100050]; bool bfs(vector<vector<int>>& g,int s){ queue<i原创 2020-07-16 10:42:28 · 334 阅读 · 0 评论 -
图的遍历(染色法判断奇环)
图的遍历(染色法判断奇环)传送门思路:首先图应该为连通图,所需要加的边数即addedge=add_{edge}=addedge=连通块数−1-1−1然后又因为是要每次走两步,即最后要走偶数步即对于走一个奇环。因为奇数条边的环倒退一步就是偶数步。判断是否有奇环用二分图的染色法即可。如果没有奇环则+1+1+1条边即可。时间复杂度:O(n+m)O(n+m)O(n+m)AC代码:#include<bits/stdc++.h>using namespace std;typedef lo原创 2020-05-21 12:59:14 · 1574 阅读 · 0 评论 -
二分图性质:不含奇环的证明。
二分图性质:不含奇环。证明:反证法。假设存在一个奇环:v1,v2,v3…v2k−1,k∈N+v_1,v_2,v_3\dots v_{2k-1},k\in N^+v1,v2,v3…v2k−1,k∈N+任意相邻两点有边连接,且v1,v2k−1v_1,v_{2k-1}v1,v2k−1有一条边相邻。假设v1v_1v1属于VxV_xVx集合,依次类推v2∈Vy,v3∈Vx…v_2\in V_y,v_3\in V_x\dotsv2∈Vy,v3∈Vx…可以知道编号为奇数的结点都属于VxV原创 2020-05-21 12:25:29 · 4066 阅读 · 0 评论 -
E. Graph Coloring(二分图+分组背包)
E. Graph Coloring(二分图+分组背包)传送门思路:将每个二分子图看作一组,两部分的结点看成两个物品,首先判断每个子图是不是都为二分图,若不是则无解,因为1和3等价,所以只需要对111和2进行染色判断,然后再用分组背包,看能否恰好装下体积为n2n_2n2的物品。因为要输出分案,所以需要一个数组来进行回溯记录路径。回溯的时候判断一下前一个路径点的物品数是来自于1,还是来自于2即可。时间复杂度O(n2)O(n^2)O(n2)AC代码:#include<bits/stdc++.h原创 2020-05-20 15:47:41 · 588 阅读 · 0 评论 -
E - Swap(二分图匹配)
E - Swap(二分图匹配)思路:将行和列看作两部分,对行进行二分图匹配,然后对找到的匹配进行判断是否在对角线上,不在则交换列。因为每行至少要有一列是1,所以交换行和列都是等价的。所以只交换行或列都是可以的。时间复杂度:O(n3)O(n^3)O(n3)AC代码:#include<cstdio>#include<cstring>#include<iostr...原创 2020-05-06 09:36:33 · 372 阅读 · 0 评论 -
D - 棋盘游戏(二分图匹配&删边)
D - 棋盘游戏(二分图匹配&删边)思路:匈牙利算法计算原始最大匹配,然后遍历去掉每条边判断一下是否最大匹配变小,若变小即该点为importantpointsimportant\quad pointsimportantpoints。时间复杂度:O(n3)O(n^3)O(n3)ps:ps:ps:一个奇怪的地方,NNN开到105105105还会WAWAWA,开到205205205才ACA...原创 2020-05-05 17:56:33 · 392 阅读 · 0 评论 -
C - Courses(二分图匹配)
C - Courses(二分图匹配)题意:给定nnn个结点,若干条边,问该图是否为完美二分匹配图。思路:匈牙利算法直接秒掉。时间复杂度:O(n3)O(n^3)O(n3)AC代码:#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int N=3...原创 2020-05-05 17:00:30 · 368 阅读 · 0 评论 -
B - The Accomodation of Students(二分图判断&匹配)
B - The Accomodation of Students(二分图判断&匹配)题意:给定若干条有向边,判断该图是否为二分图,并且求最大二分匹配。思路:用染色法判断二分图+匈牙利算法解决。AC代码:#include<cstdio>#include<cstring>#include<queue>using namespace std;c...原创 2020-05-05 10:55:35 · 376 阅读 · 0 评论