二分图匹配
L_0_Forever_LF
一个热爱OI的OIer
展开
-
BZOJ4443: [Scoi2015]小凸玩矩阵 解题报告
日常吐槽,可跳过这部分这道题第一眼就觉得要二分一下答案,然后…然后我发现我不会……..冷静下来,想了一会,感觉可以二分后可以贪心一下,然后就欢快的打了起来 打完过了样例,然后WA了(不对呀我这么正确的 正解怎么会WA呢) 打了个对拍死活拍不出来,好吧我弱我看题解唉呀我怎么没想到二分匹配…….(但我真的觉得我原来的做法没错的) 没救了吐槽结束下面是题解二分一下第kk大,然后二分匹配一下,不大于二原创 2016-10-02 22:29:36 · 916 阅读 · 0 评论 -
BZOJ1135: [POI2009]Lyz
似乎是hall定理的经典模型贪心的想,对于人的任意一个集合,肯定编号是连续的l~r一段更容易使匹配不合法 写成柿子就是∑ri=lsi>(d+r−l+1)k\sum_{i=l}^rsi>(d+r-l+1)k 把l,r移项,令ci=si−kci=si-k 柿子可以化为∑ri=lci>dk\sum_{i=l}^rci>dk 用线段树维护序列里的最大连续子序列和判一下code:#include<se原创 2017-12-11 16:28:19 · 361 阅读 · 0 评论 -
51nod 1397
根据增广路的性质(未匹配匹配未匹配交错路),画图贪贪贪感觉能搞出来?我们先把图中的m对匹配点连上,得到这个东西蓝色的为匹配边,上方为集合A,下方为集合B,不妨设|B|>=|A| 先不考虑匹配点的度数够不够,我们尝试补并尽量添加非匹配点的度 因为m个匹配已经存在,所以A集和B集中的非匹配点之间不能有边 我们先为B集某个未匹配点添加边(这里假定度数要求为2,所以这个未匹配点至少要添加2条边,与匹配原创 2017-11-20 22:12:50 · 299 阅读 · 0 评论 -
BZOJ1443: [JSOI2009]游戏Game
不妨先黑白染色,然后做二分图匹配,考虑出发点如果是非最大匹配必经点,那么无论第一个人怎么走都只能走非匹配边走到一个匹配点上(或不能走),另一个人走匹配边,那么先手必败,反之必胜 于是问题变成了哪些点是最大匹配的必经点 先做一次最大匹配,那些没有被匹配到的点,一定是非必经点,然后从这些点开始增广,按照非匹配边,匹配边走交错路,和出发点在同一个点集里的,就是要找的非必经点,时间复杂度O(n2)O(n原创 2017-08-27 22:34:32 · 855 阅读 · 2 评论 -
ARC080 F - Prime Flip
发现我们每次区间取反,相邻位置的正反关系只有两个位置发生改变 我们定义bi为ai和ai-1的正反关系,即ai=ai-1时bi=0,否则bi=1,每次取反l~r,b[l]和b[r+1]会发生改变 容易发现b[i]=1的位置一定是偶数个,我们将他们取出来 因为每次取反一定会改变两个b[i],所以我们将这些位置两两配对消去 两个位置i,j,有三种配对 |i-j|是奇素数,可以直接消去,最少花费1原创 2017-10-08 11:42:43 · 481 阅读 · 0 评论 -
BZOJ2437: [Noi2011]兔兔与蛋蛋
1443的强化版,黑白染色后,节点颜色若和染色不同,因为永远不会到达,可以视为障碍,每次移动空格到一个位置,那个位置的颜色交换到空格处,也变成障碍,所以可视为不能重复经过一点,判断每次操作前是不是必胜态只需判所处的点是否是必经点#include<set> #include<map> #include<deque> #include<queue> #include<stack> #include<cm原创 2017-09-12 22:18:31 · 410 阅读 · 0 评论 -
BZOJ1562: [NOI2009]变换序列
因为每个位置给出了距离,所以他最后的位置只有2(或1)种选择,因为是二分图,所以可以用匈牙利算法。 因为要求最后的序列字典序最小,所以按照升序建立邻接表,n~1倒序匹配Ti。 证明:根据匈牙利算法的匹配过程,这是显然的…..code:#include<set> #include<map> #include<deque> #include<queue> #include<stack> #inclu原创 2017-04-05 21:36:59 · 594 阅读 · 0 评论 -
二分图最大权匹配 KM算法 板子
例题:uoj #80. 二分图最大权匹配板子:#include<set> #include<map> #include<deque> #include<queue> #include<stack> #include<cmath> #include<ctime> #include<bitset> #include<string> #include<vector> #include<cstdio> #i原创 2017-03-19 15:13:01 · 1037 阅读 · 0 评论 -
BZOJ 3175: [Tjoi2013]攻击装置
这是一个二分图(其实怎么证这是个二分图…),求最大独立集=n-最大匹配code:#include<set> #include<map> #include<deque> #include<queue> #include<stack> #include<cmath> #include<ctime> #include<bitset> #include<string> #include<vector> #i原创 2017-02-18 09:56:35 · 541 阅读 · 0 评论 -
BZOJ3140: [Hnoi2013]消毒
首先根据题意,我们可以一维取1,另外两维取到最大,那这样的方块就是一个截面,而且这样消毒一定最优,那么可以把题意理解为一个立方体,有些点需要被染色,每次可以对一个截面染色,最少要染多少次 如果这道题是二维那就是一道非常经典的二分图匹配问题,对于一个点(x,y),第x行和第y列连边,要覆盖所有的边,最小覆盖=最大匹配数,现在是三维,观察数据范围,因为a∗b∗c≤5000a*b*c≤5000,所以最小原创 2017-01-18 11:20:52 · 507 阅读 · 0 评论 -
BZOJ大视野 1059: [ZJOI2007]矩阵游戏 解题报告
二分图匹配原创 2015-02-05 15:22:31 · 1182 阅读 · 0 评论 -
BZOJ大视野 1191: [HNOI2006]超级英雄Hero
二分图匹配原创 2015-02-05 15:25:53 · 861 阅读 · 0 评论 -
51nod 1551 集合交易
任意一个全集的子集包含的元素数量>=子集大小,根据霍尔定理,这个其实就是说存在完美匹配 先将权值全部取反,问题变成求最大收益 考虑最小割 源点和集合连边(st,i,收益) 若集合i包含了元素j,连边(i,j,inf) 元素和汇点连边(j,ed,0) 然后给每条边加上一个相对较大的值A 首先这个图一定割了n条边 证明: 若这个图边权全1,那么因为存在完美匹配,最小割=最大流=...原创 2018-04-21 07:48:09 · 255 阅读 · 0 评论