摘要:
题目链接 #解题思路 题目要求互相没有关系的最大集合,那么等于说t除最少的点,使剩下的点没有相互关系,也等于用最少的点覆盖所有关系,问题就转化成了求最小点覆盖问题了。 #代码 const int maxn = 5e2+10; const int maxm = 1e3+10; int n, vis[m 阅读全文
摘要:
题目链接 #解题思路 裸题,先用floyd传递闭包,这样如果道路的中间点被用过了,两边的点依然可以相互匹配,即实现了重点的路径。 #代码 const int maxn = 5e2+10; const int maxm = 1e3+10; int n, m, mp[maxn][maxn], match 阅读全文
摘要:
题目链接 #解题思路 题目要求用少的机器人访问所有的点,也是说找最少的路径访问所有的点,也就是最小路径覆盖问题。 题目的关键是如何建图,因为机器人只能向下走或者向右走,那么就在当前的垃圾点所在的行往下,每一列出现的第一个垃圾点之间建一条边即可。 #代码 const int maxn = 25; co 阅读全文
摘要:
题目链接 #解题思路 对原图做预处理,给横向的连通块和纵向的连通块编号,那么对于这个连通块内的点就有两个选择(x,y),这个点只有被其中一个覆盖就能被覆盖。所以结果就是求所有x->y的最大匹配,为什么呢?假设有一条边x_i → x_j,如果两点不能匹配,说明其中一个已经匹配上了,根据前面所说的,只要 阅读全文