二分匹配
芋智波佐助
菜鸟一只
展开
-
Light OJ 1373 Strongly Connected Chemicals 二分匹配最大独立集
m种阳离子 n种阴离子 然后一个m*n的矩阵 第i行第j列为1代表第i种阴离子和第j种阴离子相互吸引 0表示排斥求在阳离子和阴离子都至少有一种的情况下 最多存在多少种离子可以共存阴阳离子都至少需要存在一种 那么可以枚举哪2种离子共存 假设枚举a b 然后找到所有的和a可以共存的阴离子(设为x集合)以及和b共存的阳离子(设为y集合) 现在只需求x集合中和y集合中最多有多少个离子可以共存原创 2014-10-11 16:45:59 · 1200 阅读 · 2 评论 -
HDU 3118 Arbiter 判定奇圈
题目来源:HDU 3118 Arbiter题意:翻译过来就是不能有奇圈 每走一步状态会变化 当他回到起点时如果和原来的状态不一样 可能会死 求至少去掉多少条边可以避免这种状况发生思路:二分图是没有奇圈的 最多就15个点 我们用状态压缩枚举那些点是在二分图的一边和另外一边 确定二分图之后枚举输入的边 每条边连接的不能是同一集合的点不符合就去掉 最后取小#include #inclu原创 2014-06-25 17:45:16 · 1233 阅读 · 0 评论 -
HDU 3360 National Treasures 奇偶匹配最小点覆盖
题目来源:HDU 3360 National Treasures题意:如果a[i][j] != -1 把他转成二进制 最多有12位 代表题目那张图的12个位置 如果对应位是1 说明在那里放一个守卫可以看住a[i][j]位置上的这个东西思路:明显死最小点覆盖 奇偶匹配建图 #include #include #include using namespace std;const i原创 2014-06-29 01:09:38 · 1350 阅读 · 0 评论 -
HDU 1281 棋盘游戏 行列匹配
题目来源:HDU 1281 棋盘游戏题意:有一些点可以放车 放的时候不能相互攻击到 求出哪一些点必须放 不放就不能得到最大的匹配思路:行列匹配 矩阵的每一个点对于二分图的每一条边 首先求出最大匹配ans 然后如果每次去掉一个点然后再重新求最大匹配 很耗时 可以把第一次二分匹配的图存着然后那些关键点肯定是是匹配的边 枚举去掉那一个格点(就是去掉一条已经匹配边)如果还能匹配 那么该格点就不原创 2014-07-01 18:56:16 · 889 阅读 · 0 评论 -
Light OJ 1304 The Best Contest Site Ever 行列匹配变形
题目来源:Light OJ 1304 The Best Contest Site Ever题意:。的位置可以放人 W是障碍物 R除了不能放人之外和。一样 求最多放几个人 思路:行列匹配变形 要重新编行号和列号每一行 因为被W隔断了..RR..W.RW.RRR. 对应行号是1 1 0 0 23 0 4 0 05 0 0 0 5模拟一下预处理原创 2014-07-04 19:12:13 · 1150 阅读 · 0 评论 -
Light OJ 1429 Assassin`s Creed (II) BFS+缩点+最小路径覆盖
题目来源:Light OJ 1429 Assassin`s Creed (II)题意:最少几个人走完全图 可以重复走 有向图思路:如果是DAG图并且每个点不能重复走 那么就是裸的最小路径覆盖 现在不是DAG 可能有环 并且每个点可能重复走 对于有环 可以缩点 缩点之后的图是DAG图 另外点可以重复走和POJ 2594一样 先预处理连通性#include #include #incl原创 2014-07-05 12:17:50 · 2004 阅读 · 0 评论 -
Light OJ 1406 Assassin`s Creed 状态压缩DP+强连通缩点+最小路径覆盖
题目来源:Light OJ 1406 Assassin`s Creed题意:有向图 派出最少的人经过所有的城市 并且每个人不能走别人走过的地方思路:最少的的人可以走完全图 明显是最小路径覆盖问题 这里可能有环 所以要缩点 但是看样例又发现 一个强连通分量可能要拆分 n最大才15 所以就状态压缩 将全图分成一个个子状态 每个子状态缩点 求最小路径覆盖 这样就解决了一个强连通分量拆分的问题原创 2014-07-12 11:36:25 · 1532 阅读 · 0 评论 -
UVa 11045 My T-shirt suits me / 二分图
二分图建图 判断是否是完全匹配就行最大流也行#include #include const int MAX = 300;int a[MAX][MAX];int Match[MAX];bool vis[MAX];char str[7][10] = {"XXL","XL","L","M","S","XS"};int n,m;int get(char *s)原创 2013-12-13 10:23:16 · 1231 阅读 · 0 评论 -
POJ 1904 King's Quest 强连通分量+二分匹配
好题啊,先赞一个,这里有个讲的好的,感觉让我讲也没他这么好。。。King's Quest#include #include #include #include #include using namespace std;const int maxn = 2010;vector G[maxn*2];vector G2[maxn*2];int pre[ma原创 2016-07-13 09:34:21 · 418 阅读 · 0 评论 -
TOJ 3030 ZOJ 1140 HDU 1083 Courses / 二分图
Courses时间限制(普通/Java):3000MS/9000MS 运行内存限制:65536KByte描述Consider a group of N students and P courses. Each student visits zero, one or more than one courses. Your task is to determine wh原创 2013-11-03 21:06:27 · 1166 阅读 · 0 评论 -
TOJ 1037 POJ 2771 LA 3415 Guardian of Decency / 二分图
就是要防止男女搞对象 所以把可能的对象出去 只要去掉男女中的一个就行 求剩下最多的人数 就是责任书减去最大匹配的对数 还是 模板原创 2013-08-15 11:47:48 · 853 阅读 · 0 评论 -
TOJ 2380 POJ 2536 Gopher II /二分图
就是总的个数减去最大的匹配的个数就是答案 水题 上模板就行#include #include #include #define MAX 110struct point{ double x; double y;};point gopher[MAX],hole[MAX];bool map[MAX][MAX],vis[MAX];int Match[MA原创 2013-08-15 10:44:15 · 945 阅读 · 0 评论 -
HDU 2444 The Accomodation of Students 二分图判定+最大匹配
题目来源:HDU 2444 The Accomodation of Students题意:n个人是否可以分成2组 每组的人不能相互认识 就是二分图判定 可以分成2组 每组选一个2个人认识可以去一个双人间 最多可以有几组思路:二分图判定+最大匹配#include #include #include using namespace std;const int maxn =原创 2014-06-14 14:33:25 · 1016 阅读 · 0 评论 -
Light OJ 1356 Prime Independence 最大独立集+素数筛选
题目来源:Light OJ 1356 Prime Independence题意:给你n个数 选出最多的数构成一个集合使得任何2个数不是另外一个数的质数倍 x!=k*y 思路:矛盾的2个数连边 并且所有数分成质因子数为奇数和偶数两部分 以质因子奇偶不同构建二分图 同奇 同偶的数一定不是另外一个数的质数倍判断矛盾 首先对每个数因子分解 例如x 有a1个p1质因子 a2个p2质因子...an原创 2014-08-06 16:52:43 · 1650 阅读 · 0 评论 -
BZOJ 1143 祭祀river 最长反链
http://vfleaking.blog.163.com/blog/static/1748076342012918105514527/大前提:在有向无环图中链是一个点的集合,这个集合中任意两个元素v、u,要么v能走到u,要么u能走到v。反链是一个点的集合,这个集合中任意两点谁也不能走到谁。最长反链是反链中最长的那个。那么最长反链怎么求呢?另一个东西叫:最小原创 2016-07-22 09:02:21 · 575 阅读 · 0 评论