匹配问题
qq_45778406
这个作者很懒,什么都没留下…
展开
-
Color(二分图匹配)
Link思路:结论一:颜色数为度最大的那个点的度(m);然后m次找最大匹配(每一次找完都要删边,防止下一次重复找到),每一次将找到的最大匹配中边染成一种颜色,但每一次都应该先从度数最大的点开始找,不然就有可能,让最大的度数不能减少。#include <bits/stdc++.h>using namespace std;const int N = 1e3 + 1, M = 2e3 + 1;int n, m;int cnt, e[M<<2], ne[M<<2原创 2021-12-28 21:08:39 · 335 阅读 · 0 评论 -
Magic Potion(网络流,二分图)
题意:有n个英雄, m个怪兽, k瓶药水, 每个英雄都有一个它可以杀的怪物集合, 但只能杀一个, 但如果喝了药水就可以再杀一个,注意每个怪物只能死一次, 每个英雄只能喝一瓶药水。问英雄们最多杀多少怪物。大概思路:网络流模板题, 只要建出图就可以得到答案,设置虚点pS ~P 流量为 kP~每个英雄 1S~每个英雄 1每个英雄~能杀的怪兽集合1怪兽~终点1重点:不能S~P n + k, 然后 p ~ 每个英雄 2, 因为这样会导致有可能超过k个人发出了大小为2的流量,与题意不和细节见于代码#原创 2021-03-12 15:49:59 · 172 阅读 · 0 评论 -
Code Names(最大独立集合)
Link题意:你得到了单词集W,一组N个单词,它们是彼此的相同字母异序词,任何单词中都没有重复的字母。一组单词S⊆W称为“无交换”,指如果无法通过交换x中的一对字母(不一定相邻)将单词x∈S转换为另一个单词y∈S。你需要从给定的单词集W中找出最大的无交换集S的大小。前置知识最小点覆盖:连接所有边所需的最小顶点数最大匹配数:图中形成一对一对的点的对数。最大独立集 === 总点数 −-− 最小点覆盖二分图: 图中至少存在两个点,且图中所有回路的长度均为偶数。在二分图中:最小顶点覆盖 = 最原创 2021-03-08 18:10:50 · 328 阅读 · 2 评论