随笔分类 -  匈牙利算法

摘要:题目传送门 暴力直接对于每个点跑一遍二分图匹配,能拿四十分。 然而我们考虑正解。 对于一对Couple我们建♂->♀的一条边,对于一对曾经有恋情的情侣我们建♀->♂的一条边。 跑Tarjan缩点。 判断每一对Couple,如果在同一个强连通分量里,他们就不稳定(即能通过曾经有恋情的关系跑回来)。 c 阅读全文
posted @ 2018-03-13 15:37 Cptraser 阅读(184) 评论(0) 推荐(0)
摘要:题目传送门 二分图匹配的题目。 但建边有一定难度,关系比较复杂。 首先要统计总共需要几张床。 在校且住校的会需要一张床,不住校的需要一张床。 然后对于在校且住校的与自己的床连边,不住校的与认识的住校的人连一条边。 跑一遍匈牙利就好了。 code: 阅读全文
posted @ 2018-02-13 14:23 Cptraser 阅读(165) 评论(0) 推荐(0)
摘要:题目传送门 一看便知,二分图最大匹配的裸题。 但是,用匈牙利算法的话,每一次的memset会超时,所以这里使用时间戳优化。 [时间戳] 记录每一次操作是第几次,只要不是现在这个操作的话就相当于“0”。 code: #include <bits/stdc++.h> #define MAXN 10001 阅读全文
posted @ 2017-09-25 19:16 Cptraser 阅读(132) 评论(0) 推荐(0)
摘要:题目传送门 由题意可得,这道题是求使一些行上的1是否能两两不同行,两两不同列。 于是我们就可以把1点的i与j连边,做一遍二分图匹配。 如果每一行即i都可以匹配到,那么就有解。 code: /******************************************************* 阅读全文
posted @ 2017-09-25 19:16 Cptraser 阅读(137) 评论(0) 推荐(0)