随笔分类 -  图论-KM算法

摘要:题目链接 "BZOJ2437" 题解 和 "JSOI2014" 很像 只不过这题动态删点 如果我们把空位置看做X的话,就会发现我们走的路径是一个OX交错的路径 然后将图二分染色,当前点必胜,当且仅当当前点必须作为最大匹配的匹配点 移动相当于删点,删点的话只需打个标记即可 判断当前点是不是必选 阅读全文
posted @ 2018-07-01 19:54 Mychael 阅读(214) 评论(0) 推荐(1) 编辑
摘要:题目链接 "BZOJ1443" 题解 既然是网格图,便可以二分染色 二分染色后发现,游戏路径是黑白交错的 让人想到匹配时的增广路 后手要赢【指移动的后手】,必须在一个与起点同色的地方终止 容易想到完全匹配的图先手是必胜的,因为完全匹配的图要么走到对面终止,要么从对面找一条非匹配边走回来,而由于是完全 阅读全文
posted @ 2018-07-01 18:41 Mychael 阅读(240) 评论(0) 推荐(0) 编辑
摘要:题目链接 "洛谷P4589" 题意可能不清,就是给出一个带权有向图,选出n+1条链,问能否全部点覆盖,如果不能,问不能覆盖的点权最小值最大是多少 题解 如果要问全部覆盖,就是经典的可重点的DAG最小路径覆盖,floyd求出传递闭包后跑二分图最大匹配即可 如果不能全部覆盖,就二分答案,看看能否 阅读全文
posted @ 2018-05-17 11:25 Mychael 阅读(290) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ5154" 题解 先跑出一个匹配方案 然后暴力删去每对匹配再检验一下答案是否减小 使用KM算法提升速度 C++ include include include include include include define REP(i,n) for (int i = 1; i (a 阅读全文
posted @ 2018-05-14 09:52 Mychael 阅读(245) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3571" 题解 如果知道最小乘积生成树,那么这种双权值乘积最小就是裸题了 将两权值和作为坐标,转化为二维坐标系下凸包上的点,然后不断划分分治就好了 这里求的是最小匹配值,每次找点套一个二分图最小权匹配 为什么用KM算法?因为这道题丧心病狂卡费用流QAQ 写完就A啦,十分的感人 阅读全文
posted @ 2018-05-05 16:37 Mychael 阅读(292) 评论(0) 推荐(0) 编辑
摘要:先orz "litble——KM算法 " 为什么要用KM算法 ~~因为有的题丧心病狂卡费用流~~ KM算法相比于费用流来说,具有更高的效率。 算法流程 我们给每一个点设一个期望值【可行顶标】 对于左边的点来说,就是期望能匹配到多大权值的右边的点 对于右边的点来说,就是期望能在左边的点的期望之上还能产 阅读全文
posted @ 2018-05-05 15:56 Mychael 阅读(766) 评论(0) 推荐(0) 编辑
摘要:题目 输入格式 输出格式 输入样例 5 1 1 2 2 1 输出样例 1 2 4 0 3 提示 30%的数据中N≤50; 60%的数据中N≤500; 100%的数据中N≤10000。 题解 每个位置可以和两种数匹配,显然是一个二分图匹配问题 但要求字典序最小,我们就按字典序存边 由于在KM算法中,后 阅读全文
posted @ 2018-04-26 19:24 Mychael 阅读(157) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示