
二分图匹配
nlj1999
这个作者很懒,什么都没留下…
展开
-
1059: [ZJOI2007]矩阵游戏
二分图匹配 其实可以直接邻接矩阵建图,不过我用的邻接表。 如果第i行第j列为1,则S中节点i向T中节点j连边,若最大匹配数等于n则有解,否则无解。 数组开小了没1A。。。。。。。。 #include #include #include using namespace std; struct Edge{int to,next;}e[50005]; int head[205],cnt,link原创 2015-12-09 19:51:27 · 385 阅读 · 0 评论 -
1191: [HNOI2006]超级英雄Hero
很裸的二分图匹配。 然而本沙茶没读题WA了三次。。。。。。。。。 #include #include #include using namespace std; struct Edge{int to,next;}e[5005]; int head[2005],cnt,linked[1005]; bool vis[1005]; void ins(int u,int v){ cnt++;e[cn原创 2015-12-09 20:02:47 · 631 阅读 · 0 评论 -
ZOJ 1654 Place the Robots
04年论文题《黄源河--浅谈图论模型的建立与应用》 #include #include #include #include using namespace std; const int inf=1e9; struct Edge{int to,next,v;}e[200005]; int head[5005],cnt,d[5005]; void ins(int u,int v,int w){ e原创 2016-03-04 13:10:24 · 287 阅读 · 0 评论 -
COGS 336 && Vijos 1018 && NOI2003 智破连环阵
楼教主论文里的题 这么多剪枝吓坏我了 忽然想起来我WC的时候第一题前两个点也是搜索+最大流,不知道能不能剪枝把后面的数据水过去呢233333然而并不能想到什么剪枝 #include #include #include #include using namespace std; vectorg[105]; bool vis[105],can[105][105][105]; int maxl[1原创 2016-03-05 09:05:22 · 846 阅读 · 0 评论 -
WC2016 挑战NPC
NPC,即Non_Player Character,作为游戏很重要的一种存在…… 哎不对,扯远了。 这题出题人卖萌,明显不是NPC问题。 我们可以发现(通过前几个点找一找规律什么的)这题可以建立一个一般图最大匹配模型。 首先将所有的筐子拆成3个点,任选其中两点连边,然后对于每一个条件,将对应球与筐子的三个点分别连边。 可以证明(不会),最大匹配中所有球一定是匹配了的。 于是就可以用带花原创 2016-02-02 14:24:44 · 924 阅读 · 0 评论 -
BZOJ 3140: [Hnoi2013]消毒
首先简单分析一下题目,可以找到一种很好的策略,即每次选一个切面进行消毒,费用为1。 然后我们考虑一下贪心,每次找点最多的那个面,把它消掉,直到没有点了。 显然这么做是错的QAQ 俗话说得好,枚举可以作为其他算法的基础 不妨设a 然而这么做是有风险的,最坏情况复杂度是3*2^17*17*17,很可能炸掉啊 所以我们考虑剪个枝什么的 由于匈牙利算法有个神奇的特性,它支持动态加边,也就是我原创 2016-04-08 16:40:18 · 661 阅读 · 0 评论 -
BZOJ 3571: [Hnoi2014]画框
一看TM就不会做 赶紧学了一发最小乘积生成树和最小乘积最大匹配 大概就是把每个完备匹配后的结果看成一个点(sigma(a),sigma(b)),发现答案都在下凸壳上,然后用分治递归找下凸壳就好了。 首先找到下凸壳两端的点(横坐标最小和纵坐标最小的两个点),然后连线,找到离线最远的点(叉积推公式,KM/费用流找匹配),然后分治,直到最远的点就是两点之一了,也就是两点是下凸壳上相邻的两点。 (原创 2016-04-10 09:54:59 · 393 阅读 · 0 评论 -
BZOJ 3168: [Heoi2013]钙铁锌硒维生素
对着网上下的数据拍发现过不去,交上去就1A了。。。。。。 看discuss才发现标程是错的。。。。。。。 根据14年的论文,A为n维向量的一组基,B中任意行向量属于Span(A),于是可以得出系数矩阵C,且C*A=B,A中行向量x能被B中行向量y替换当且仅当y的表示向量(C中的一个列向量)中x位置的系数不为0,于是C的转置即为二分图的邻接矩阵,问题转化为二分图最小字典序最大匹配 首先跑一遍匈原创 2016-05-13 16:23:59 · 1128 阅读 · 0 评论 -
BZOJ 4554: [Tjoi2016&Heoi2016]游戏
(楼下的小学生好烦啊,老是在那里红星闪闪QAQ,感觉要被洗脑了,md一整天都是智障状态) 这题没有硬石头就直接跑二分图匹配就好了 有硬石头就把这行/列拆一拆 #include #include #include #include #include #include #include #include #include #define rep(i,l,r) for(int i=l;i<=r;i原创 2016-05-21 18:30:09 · 427 阅读 · 0 评论