二分图
~无相~
这个作者很懒,什么都没留下…
展开
-
AcWing 1293. 夏洛克和他的女朋友(二分图染色+素数判断)
题目夏洛克有了一个新女友(这太不像他了!)。情人节到了,他想送给女友一些珠宝当做礼物。他买了 n 件珠宝,第 i 件的价值是 i+1,也就是说,珠宝的价值分别为 2,3,…,n+1。华生挑战夏洛克,让他给这些珠宝染色,使得一件珠宝的价格是另一件珠宝的价格的质因子时,两件珠宝的颜色不同。并且,华生要求他使用的颜色数尽可能少。请帮助夏洛克完成这个简单的任务。输入格式只有一行一个整数 n,表示珠宝件数。输出格式第一行一个整数 k,表示所使用的颜色数;第二行 n 个整数,表示第 1 到第 n原创 2020-10-09 09:35:36 · 245 阅读 · 0 评论 -
AcWing 378. 骑士放置(最大独立集+二分图+最大匹配)
题目给定一个 N*M 的棋盘,有一些格子禁止放棋子。问棋盘上最多能放多少个不能互相攻击的骑士(国际象棋的“骑士”,类似于中国象棋的“马”,按照“日”字攻击,但没有中国象棋“别马腿”的规则)。输入格式第一行包含三个整数N,M,T,其中T表示禁止放置的格子的数量。接下来T行每行包含两个整数x和y,表示位于第x行第y列的格子禁止放置,行列数从1开始。输出格式输出一个整数表示结果。数据范围1≤N,M≤100输入样例:2 3 0输出样例:4思路题目要求一个棋盘里最多能放多少个互不攻击的原创 2020-09-24 15:28:40 · 223 阅读 · 0 评论 -
AcWing 376. 机器任务(最小覆盖点+二分图最大匹配)
题目有两台机器 A,B 以及 K 个任务。机器 A 有 N 种不同的模式(模式0~N-1),机器 B 有 M 种不同的模式(模式0~M-1)。两台机器最开始都处于模式0。每个任务既可以在A上执行,也可以在B上执行。对于每个任务 i,给定两个整数 a[i] 和 b[i],表示如果该任务在 A 上执行,需要设置模式为 a[i],如果在 B 上执行,需要模式为 b[i]。任务可以以任意顺序被执行,但每台机器转换一次模式就要重启一次。求怎样分配任务并合理安排顺序,能使机器重启次数最少。输入格式输入原创 2020-09-24 14:41:05 · 164 阅读 · 0 评论 -
AcWing 372. 棋盘覆盖(二分图最大匹配)
题目给定一个N行N列的棋盘,已知某些格子禁止放置。求最多能往棋盘上放多少块的长度为2、宽度为1的骨牌,骨牌的边界与格线重合(骨牌占用两个格子),并且任意两张骨牌都不重叠。输入格式第一行包含两个整数N和t,其中t为禁止放置的格子的数量。接下来t行每行包含两个整数x和y,表示位于第x行第y列的格子禁止放置,行列数从1开始。输出格式输出一个整数,表示结果。数据范围1≤N≤100输出样例:8 0输出样例:32思路题目要求一个矩阵内最多能放入多少个12的小方块,这题先要看出来是个二分图原创 2020-09-24 14:11:45 · 166 阅读 · 0 评论 -
匈牙利算法:二分图最大匹配
#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int N = 510, M = 100010;int n1, n2, m;int h[N], e[M], ne[M], idx;int match[N];bool st[N];void add(int a, int b){ e[idx] = b, ne[idx] = h[原创 2020-09-24 14:03:48 · 71 阅读 · 0 评论 -
染色法模板
#include <iostream>#include <queue>#include <cstring>#include <algorithm>using namespace std;const int N = 1e5 + 5;int h[N]; int ne[N * 2]; int e[N * 2];int idx;int n, m;int colour[N];void add(int a, int b) { e[idx] = b;原创 2020-09-24 13:31:14 · 157 阅读 · 0 评论