随笔分类 -  ACM / 二分图

摘要:原题链接 考察:二分图匹配 思路: 最小路径点覆盖.每个任务的接连完成构成一条简单路径,求最少的简单路径覆盖所有的任务点. ##Code #include <iostream> #include <cstring> using namespace std; const int N = 510; ty 阅读全文
posted @ 2021-07-15 09:25 acmloser 阅读(27) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:二分图匹配 思路: 实际考察最小覆盖点.将文物与它的关键点建边.除此之外我们需要将点分为两个集合.可以发现每个点与它的关键点奇偶性不同.由此将点分为$x+y$为奇和偶两个集合. 注意建边,需要$(x,y)\(为关键点与文物建边,\)(x,y)$与它的关键点建边. ##Code #in 阅读全文
posted @ 2021-07-15 08:52 acmloser 阅读(22) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:二分图匹配 错误思路: 统计每种颜色的行数和列数,很明显不一定是全去除行(列). 思路: 对于$mp[i][j]$,如果我们去除了它,要么是去除第$i$行,要么是去除第$j$列.枚举每一种颜色$x$,所在坐标$i,j$,连接边,求最小点覆盖. 时间复杂度$O(50N^3)$ ##Co 阅读全文
posted @ 2021-07-14 20:31 acmloser 阅读(24) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:二分图 思路: 求最大的集合,该集合内无边相连,即最大独立集.这里比较难把点分成二部分.我们可以直接不分,将每个点看成出度和入度,每条边(不相交)都等价于2个匹配.最后将匹配数$/2$即可. ##Code #include <iostream> #include <cstring> 阅读全文
posted @ 2021-07-14 17:43 acmloser 阅读(36) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:二分图 思路: 求最大的点集合,集合内任意两点不可以抵达.求的答案略像最小路径重复点覆盖,每条路径上一定存在其他路径无法抵达的点.我们假设答案为$ans$,最小路径重复点覆盖条数为$cnt$. 明显选了一条路径上的点就不能再选这条路径的其他点.所以$ans>=cnt$ 假设每条路径的 阅读全文
posted @ 2021-07-14 15:57 acmloser 阅读(27) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:二分图匹配 思路: 对于每个$a[i],b[i]$连接边,需要选择最少的点,覆盖所有的边. 对于二分图匹配问题,每个点只能枚举一次. 最小点覆盖问题,两个端点连接的边只能选择其中一个,然后覆盖所有的边. ##Code #include <iostream> #include <cst 阅读全文
posted @ 2021-07-14 01:50 acmloser 阅读(24) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:二分匹配 思路: 长度为2的骨牌,相当于骨牌所占用两个点匹配,不重叠:没有一个点共用两条边,求能放的骨牌:最大匹配数. 二分匹配前一定要先判断二分图,再将点分成两派,只枚举其中一派. ##Code #include <iostream> #include <cstring> usin 阅读全文
posted @ 2021-07-11 10:04 acmloser 阅读(25) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:二分+二分图判定 or 带权并查集+贪心 思路一: 二分+二分图判定.由题目可知我们要求最大矛盾的最小值.最小值可以通过二分枚举,那么关键是如何check.首先容易想到>最小值的两个人一定不能在同一集合.需要将它们分别放在不同的监狱.那么问题来了:这样存放可能会导致某些破坏最小值合法 阅读全文
posted @ 2021-04-12 01:30 acmloser 阅读(106) 评论(0) 推荐(0) 编辑
摘要:原题链接 还是不会建立二分图啊!!!蒟蒻落泪 想了很久以为是缩点,结果不用缩就是在相邻点处建边就行了(覆盖面积不允许重复!!!) 关键还是建立二分图: 这道题是将相邻点在不同集合,比如[1,1]在集合1,[1,2]、[0,1]在集合2.通过画图可以发现如果相邻则它们的i+j的奇偶一定不同.因此可以分 阅读全文
posted @ 2021-01-23 22:24 acmloser 阅读(45) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:二分图匹配+线性代数(?) 完全是参考大佬的思路: 根据线性代数的知识,如果矩阵的对角线全为1,说明该矩阵的秩是满的,而初等变换(交换行或者列)不改变矩阵的秩,因此行变换可由列变换代替,其实这道题感觉是在求矩阵的秩,行列变换同时进行会改变矩阵的秩,因此这道题只用行变换或者列变换即可 阅读全文
posted @ 2021-01-23 22:05 acmloser 阅读(67) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:二分图匹配+图论的基本操作 图论题目做多了看到这句不在这些格子上放车,也可以保证尽量多的“车”被放下,应该能反应过来是删边操作 其实我没反应过来 这道题和之前的HDU 1045一样也是缩点操作,通过这道题也搞明白了点之前的缩点操作,行集和列集有交集才能连边,然后就是走一波最大匹配,最 阅读全文
posted @ 2021-01-23 17:35 acmloser 阅读(62) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:二分图匹配 上题学会如何分配集合,这题又学会哪个作为匹配的主动方... 正常思路是人到课,但是本题课到人更方便处理,猜想二分图应该是一对多做主动方 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 阅读全文
posted @ 2021-01-23 14:50 acmloser 阅读(40) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:二分图匹配+二分图判定 蒟蒻落泪,一开始不知道怎么分组,想了很久才发现在判定的时候就能分组. 看了一些大佬的题解,建立有向图,每个点跑一遍匹配,也能AC.但是这样感觉有点不太对,样例这样跑就会一个点连了两条边.可能我没get到大佬思路 我是采用vector存储,但没必要,用color 阅读全文
posted @ 2021-01-23 14:03 acmloser 阅读(42) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:暴力搜索或二分图匹配 暴力搜索的思路: 对地图的每一个位置dfs,如果放炮就要判断该处上下左右有没有其他炮,如果不放就继续搜索 关于判断:我们需要选定一个方向一直走,可以用while,我一开始的思路是bfs标记放了炮的上下左右.这种做法是错的,如果炮在(1,1)按bfs(2,1)会被 阅读全文
posted @ 2021-01-23 12:07 acmloser 阅读(36) 评论(0) 推荐(0) 编辑