二分图
文章平均质量分 60
里阿奴摩西
这个作者很懒,什么都没留下…
展开
-
[二分图 费用流] BZOJ 4514 [Sdoi2016]数字配对
不会有奇环,那么就建二分图 然后跑最大费用流,直到费用小于零为止,处理下零头 #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) #define oo 1LL<<60 #define V G[p].v using namespace std; typedef long long ll; inl原创 2016-04-23 10:06:35 · 635 阅读 · 0 评论 -
[霍尔定理] AtCoder Regular Contest 076 F Exhausted?
霍尔定理 有完美匹配必然有任意 |S|≤|N(S)||S|\le|N(S)| 那么这题答案就是max{S−|N(S)|}max\{ S-|N(S)|\}我们枚举N(S)N(S),必然是x≤s∨x≥tx\le s \vee x\ge t的形式 那么对其有贡献的ii,满足Li≤s<t≤RiL_i\le s< t\le R_i 直接扫描线注意特殊讨论N(S)N(S)是全集的情况 这样的话不用满足Li原创 2017-06-26 16:01:45 · 950 阅读 · 1 评论 -
[二分图匹配 线段树] Codeforces 573D Round #318 [RussianCodeCup Thanks-Round] (Div. 1) D. Bear and Cavalry
如果没有限制,显然根据排序不等式 当每个点最多有一个限制不能选的时候,有一个很重要的性质 性质:i对应的点与i的距离<=2 证明: 设有一种情况i对应i+3 i—–(i+3) i+1—(i+2) i+2—(i) i+3—(i+1) 那么,对于i,i+1来说,必定在(i–i+2),(i+1–i+3)中有一个限制必选,否则交换i,i+1更优 同理,(原创 2017-07-11 22:12:27 · 534 阅读 · 0 评论 -
[最大团 随机化 || 二分图最大独立集] BZOJ 4080 [Wf2014]Sensor Network
最大团这种数据范围,标算只有被随机艹的节奏了吧正解 抄自这里 我们穷举两个点,这两点距离要小于限制 然后我们分别以这两个点为圆心,两点距离为半径画圆 圆圆相交的部分被两点练成线段划分成两部分,不难发现 每个部分内点点之间的距离是小于限制的,很明显想到二分图 对于上半部分与下半部分的两点,如果距离大于限制则连边 然后我们求最大点独立集即可 #include<cstdi原创 2017-06-17 18:03:16 · 3094 阅读 · 0 评论 -
[扫描线 二分图最大匹配 线段树优化网络流] Codeforces 793G Tinkoff Challenge - Elimination Round G. Oleg and chess
这个我们首先可以转化成一个二分图最大匹配的模型 但是肯定跑不出 首先扫描线 把free的格子剖成O(n)O(n)个矩形 对两边都建成线段树 每个矩形对应两边各O(logn)O(\log n)个点 两两相连 总边数O(nlog2n)O(n\log^2n)#include<cstdio> #include<cstdlib> #include<algorithm> #include<cstrin原创 2017-05-28 10:50:50 · 1058 阅读 · 0 评论 -
[状压DP Hall定理 折半] Codeforces Gym 101173 CERC 16 B & BZOJ 4788 Bipartite Blanket
有印象这是JZOJ某次的题 但是当时不会做 还是直接搬题解吧首先是hall定理 他有个推论是正则二分图一定有完美匹配 当然这个跟本题不相关 Hall’s marriage theorem gives a necessary and sufficient condition for existence of a matching that covers a set of nodes原创 2017-03-30 21:07:41 · 966 阅读 · 0 评论 -
[欧拉回路 KM] AOJ 2724 Laser Cutter
存在一种方式等价于存在欧拉回路 对于有向图即入度=出度 所以对所有的线段的起点与终点按距离进行最小权匹配即可#include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #include<cmath> #define cl(x) memset(x,0,sizeof(x)) #define read(x) scan原创 2017-03-03 20:58:46 · 360 阅读 · 0 评论 -
[二分图博弈] BZOJ 1443 [JSOI2009]游戏Game & BZOJ 2437 [Noi2011]兔兔与蛋蛋
二分图博弈考虑这样一类博弈问题 博弈状态可分为两类 即状态空间可分为两个集合 对应二分图X集和Y集 任意合法的决策使状态从一类跳转到另一类 可以用二分图描述 不可以转移至已访问的状态 无法转移者判负。 问题转化从二分图指定起点开始轮流沿着边移动 不可重复访问点 无法移动判负。不妨设起点s∈Xs\in X 考虑该二分图的某个最大匹配 若ss不属于某个最大匹配 则先手所转移到的点y∈Yy\in Y一定原创 2017-03-02 20:59:47 · 426 阅读 · 0 评论 -
[二分图最大匹配必配点] BZOJ 3546 [ONTAK2010]Life of the Party
%%%dyh 首先求出最大匹配,下面考虑左边点的情况。 我们将匹配中的边从右往左连,不在匹配中的边从左往右连。 这个时候一条增广路成为一条连续的路径。 从每个左边未匹配的点还是遍历,如果被一个左边的点被访问到,说明存在一条增广路,也就是不一定在最大匹配中。 所有没有被访问到的点一定在最大匹配中。 #include #include #include #inc原创 2016-08-05 14:50:06 · 895 阅读 · 0 评论 -
[对偶 KM算法 生成树 || 最大费用可行流 || 线性规划] BZOJ 1937 [Shoi2004]Mst 最小生成树
树边减,非树边加,wi表示i号边原来的边权,di表示i号边的改变量 对于一条非树边,覆盖所有树边,都要满足:wi−di≤wj+dj 得wi−wj≤di+dj 这样的话d就是KM算法里的顶标 跑最大匹配即可 #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace原创 2016-07-04 18:44:48 · 945 阅读 · 0 评论 -
[二分图 dfs 打标记] BZOJ 4424 Cf19E Fairy
二分图不能有奇环 那么这条边一定在奇环的交上 还不能在偶环上 因为偶环和奇环会组成新的奇环 那么给奇环打+1标记 偶环打-1标记 标记为奇环个数的边即可 这种打标记的树D方法比较重要 #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace std; inline原创 2016-10-31 18:05:43 · 878 阅读 · 0 评论 -
[二分图完美匹配必要边 强连通分量] BZOJ 2140 稳定婚姻
求二分图完备匹配的必要边,①存不存在增广环? O(N^2) ②直接试着删去按照hungery找完备匹配 O(N^3)。 如果一个点所在的强连通分量大小大于1,那么说明原图存在一条匹配边-非匹配边-匹配边-非匹配边的环,所以这些边不一定在最大匹配上。 #include #include #include #include #include #define V G[p].v using原创 2016-07-04 18:26:17 · 829 阅读 · 0 评论 -
[欧拉回路 二分图] CEOI 2005 Day1 Depot Rearrangement
论文:仇荣琦《欧拉回路性质与应用探究》 #include #include #include using namespace std; typedef pair abcd; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fr原创 2016-12-06 21:03:25 · 665 阅读 · 0 评论 -
[DP 匈牙利 最小链覆盖] BZOJ 2044 三维导弹拦截 & 计蒜客 271 拦截导弹
第一问就是偏序最长链 按一维排序然后DP即可 第二问是个最小链覆盖 那么转化为二分图 n-最大匹配 BZOJ上一个匈牙利就过了 #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace std; inline char nc(){ static ch原创 2016-11-17 07:11:30 · 501 阅读 · 0 评论 -
[二分图匹配 贪心] BZOJ 4276 [ONTAK2015]Bajtman i Okrągły Robin && BZOJ 2034 [2009国家集训队]最大收益
%%%dyh 按强盗从大到小排序,贪心选取每个强盗能不能抓。 判断一些强盗能不能抓完,可以按左端点排序,使用优先队列维护右端点。 贪心算法的正确性: 考虑匈牙利算法,从大到小一个一个匹配,一个点一旦在匹配中,那么一直在匹配里面。 也可以直接用拟阵证明 但我不会 堆的复杂度是n2logn 有线性的判断方法 我们从小到大扫描所有的位置,如果这个位置没有分配任务,那么原创 2016-08-05 14:47:42 · 837 阅读 · 0 评论 -
[最小乘积匹配 分治 KM] BZOJ 3571 [Hnoi2014]画框
类似最小乘积生成树的做法 详见另一文:http://blog.csdn.net/u014609452/article/details/51822880 #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace std; typedef pair abcd; inlin原创 2016-07-04 18:40:05 · 482 阅读 · 0 评论 -
[KM 树同构Hash DP] BZOJ 3197 [Sdoi2013]assassin
丢下题解跑:http://blog.csdn.net/PoPoQQQ/article/details/43206463 #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace std; typedef unsigned long long ull; inline c原创 2016-07-04 19:03:23 · 585 阅读 · 0 评论 -
[KM算法] BZOJ 2539 [Ctsc2000]丘比特的烦恼
这就很裸了 只是坑点实在多 坐标有实数 字串大小写 不可连的边设为-inf 貌似题目保证有完备匹配? #include #include #include #include #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace std; const int原创 2016-07-04 18:33:12 · 840 阅读 · 0 评论 -
[数学 二分图匹配] SRM 456 div1 FunctionalEquation
本来想自己再推一下的,但是退役了也就弃坑了 未经允许的搬了搬题人的题解// BEGIN CUT HERE #include<conio.h> #include<sstream> // END CUT HERE #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<iostream> #in原创 2017-07-23 13:41:16 · 672 阅读 · 0 评论