KM算法
Wuliwuliii
谁无暴风劲雨时,守得云开见日明!
展开
-
【SDOI2017】新生舞会【01分数规划+KM算法】
题目链接 特别强调,我这里的KM算法是bfs写的,复杂度真实的的KM算法,有模板写错的,可以进行对照改一改。 最开始的时候给出公式,要求,要求这样的ans是最大的。现在,我们不妨去二分答案这个ans。时候,则有mid偏小,二分的答案偏小。反之,偏大。#include <iostream>#include <cstdio>#inclu...原创 2020-02-24 20:41:44 · 210 阅读 · 0 评论 -
整数规划【HDU - 6346】【KM算法】
题目链接 这题,更多的是在模拟这个过程,然后特别神奇的(基本上是带着赌一把的运气来)发现我们每一行每一列最多选择唯一的值,并且这个值还是要尽可能的小,才能使得最后的和是满足这个条件的。 那么,剩下的就是考验板子咯,有的dfs来求KM的板子在这里会被卡,因为dfs会存在一部分的冗余项,所以复杂度就是偏高了的。#include <iostream>#include &l...原创 2020-01-03 21:41:29 · 253 阅读 · 1 评论 -
Ants 【POJ - 3565】【KM算法+四边形不等式】
题目链接 题意:有 N个蚂蚁,N个苹果,要在每个蚂蚁和一个相应的苹果之间连边,问如何给蚂蚁分配苹果,可以使这些边不相交。 思路:首先,推一下,如果相交的话会发生什么事情,然后我们来避免相交。 如图,AD和BC相交,我们可以看到,此时构成了一个四边形,我们要让A、B和C、D不相交的话,需要让A选择C,让B选择D。 那么,推导一下AC、BD、AD、BC之间的关系:...原创 2020-01-02 15:08:53 · 182 阅读 · 2 评论 -
Supervisor, Supervisee 【POJ - 2400】【KM算法】
题目链接 题意: 这道题的题意不是那么的明确,并且输入和阐述也有一些小冲突。具体是这样的: 有N个老板和N个来面试的员工,每个老板都对应的有第一想要的员工~第N想要的员工(最不想要的员工),然后呢,员工也对应有最想去的老板公司单位,也分为1~N序列。现在呢,我们希望贡献最大,贡献是怎样算的呢,如果两方都是第一喜欢的话,那么贡献为0,有譬如说老板第x喜欢某员工,且该员工第y喜欢该老...原创 2020-01-02 13:45:03 · 191 阅读 · 1 评论 -
Image copy detection 【HDU - 3523】【KM算法】
题目链接 此题难做在于题意! 题意:给出两个数N、M,有M行N列的这样一个矩阵,现在我们手上有1~N这N个元素,我们想把它们放到1~N列的一一对应上去,于是乎,对应的匹配值是它和这一列上M个元素的绝对之差。我们现在想办法要让这个绝对之差的值之和最小。 思路:读懂了题意之后就知道了是最小权完美匹配问题了,直接建负边,然后KM即可。#include <iostream&g...原创 2020-01-02 09:38:48 · 223 阅读 · 0 评论 -
My Brute 【HDU - 3315】【KM算法】
题目链接 题意:有两个人,他们各自首先都有N个兵,对应的分为S阵营和X阵营,S阵营中每个兵的血量是Hi、伤害是Ai,并且先手攻击。X阵营每个兵的血量是Pi,伤害是Bi,后手。并且,S阵营中的每个兵如果赢了,会获得对应的积分Vi,输了则失去Vi分,如果最后大于0,则获得胜利,输出最后的最高得分以及相似度,相似度是现在的新的排序和原来的S1、S2、……、Sn原来的相等位置的个数除以N。 思...原创 2020-01-01 23:49:18 · 258 阅读 · 0 评论 -
Assignment 【HDU - 2853】【KM算法+思维】
题目链接 这个思维,当真是有点想不到,一开始净是往link_x[]这个角度去想了,但是这样的话,又会影响KM形成的交错树,显然不是这么解的。 题意:有N个公司,还有M个任务,任务数大于等于公司数,然后每家公司做每个任务都有对应的贡献,于是乎,初始在加上每个公司有原本应该做的任务,就有一个初始贡献,现在我们想要最少的改变公司和对应的做的任务,想知道最大可以改变的值是多少? 思路:首...原创 2020-01-01 20:53:29 · 165 阅读 · 0 评论 -
Mining Station on the Sea 【HDU - 2448】【KM算法+多源最短路】
题目链接 题意: 给你N个港口,有N艘船,它们分别在不同的矿厂,现在呢,它们要返回港口了,并且每个港口只能停靠一只船,而且呢船只要到了港口就不可以再往外跑了。现在给出K条边,是矿厂与矿厂之间的无向路径,然后呢有P条边,是港口与矿厂之间的无向路径。 思路: 在这里,我们需要把“进了港口就不能再出来了”这个关键点用好,我们肯定可以确定的是船只能在矿厂和矿厂之间移动,所以我们不妨...原创 2020-01-01 16:00:48 · 211 阅读 · 0 评论 -
Similarity 【HDU - 3718】【KM算法】
题目链接 题意: 有T次查询,每次给出一个长度为N的基础串,以及分别给出M个同样长度为N的待查询串,我们现在想知道,对应的交换顺序之后的使得它们可以成映像关系的最大的长度比上总长度的值为多少。 思路: 关于这道题的N是很大,但是由于K只有上限26,所以突破口在于这个K,我想让最多的匹配上,也就是匹配上的权值是最大的,这里该怎么办呢?于是就可以建立mp[27][27],对应每...原创 2019-12-31 15:32:27 · 171 阅读 · 0 评论 -
Card Game 【HDU - 3722】【Trie树优化+KM算法】
题目链接 就是说,我们可以把一个卡片贴到前面一个卡片上面,当且仅当前面卡片的后缀是你的前缀,可以得到一些覆盖,现在我们有N个卡片,我们现在想知道怎样才能使得卡片的覆盖面积数量是最大的。 首先,我们利用Trie字典树来进行优化查询的这部分,强行把原本,其中len代表的是字符串的长度,然后优化到了,这里就是一个离线的操作来进行优化了。 然后是环与KM的关系了。#include ...原创 2019-12-25 19:35:05 · 167 阅读 · 0 评论 -
A new Graph Game 【HDU - 3435】【KM算法】
题目链接 利用环的性质,我们依然可以建立二分图,进行KM即可。#include <iostream>#include <cstdio>#include <cmath>#include <string>#include <cstring>#include <algorithm>#include <l...原创 2019-12-25 16:29:09 · 156 阅读 · 0 评论 -
Tour 【HDU - 3488】【KM算法】
题目链接 因为是环,所以每个点都由一个点进入并且由一个点走出,所以不就是最小权的完美匹配问题了吗。#include <iostream>#include <cstdio>#include <cmath>#include <string>#include <cstring>#include <algorithm&...原创 2019-12-25 15:14:04 · 164 阅读 · 0 评论 -
Cyclic Tour 【HDU - 1853】【KM算法】
题目链接 题目说,要构成环,那么,环的特性是什么?所有的点出度和入度都是1,所以不相当于匹配了嘛?相当于从一个点(唯一点)入,并且唯一点出,然后又要满足最小权匹配,所以当仁不让就是KM算法了。#include <iostream>#include <cstdio>#include <cmath>#include <string>#...原创 2019-12-25 14:57:00 · 143 阅读 · 0 评论 -
One fihgt one 【HDU - 2813】【KM算法】
题目链接 TIPS:如果用了cin的话,使用C++提交可以A,否则会T。 然后剩下的就是跑最小权的完美匹配问题了,直接就是建立负边,跑KM即可。#include <iostream>#include <cstdio>#include <cmath>#include <string>#include <cstring&g...原创 2019-12-19 15:23:50 · 138 阅读 · 0 评论 -
Chocolate 【HDU - 2282】【KM算法】
题目链接 题目就是给出N个数,保证他们的和是小于等于N的,最后使得所有的点的权值都是小于等于1的,问最小的移动次数,每次是只能移动1。 然后一开始的时候,想的是跑费用流,太明显费用流是可以求解的,但是无论是Dijkstra优化的费用流还是spfa的费用流解法,都是接二连三的T了。 然后的话,看了看数据范围,想了一下,N个a[i]的总和是小于等于N的,所以,我们现在考虑一下,现在某...原创 2019-12-19 15:00:13 · 122 阅读 · 0 评论 -
Special Fish 【HDU - 3395】【KM算法】
题目链接有N条鱼,每条鱼都认为自己是雄的,他们会找自己对应的雌鱼配对,并且如果可以配对的话,就是意味着我们的答案上可以加入它们的权值异或值。 并且,题目中说到了,每一条鱼都是只可以和一条配对,并且每条鱼只能被攻击一次。 所以,还是比较明显的二分图的最大权匹配了,当然,这里可以不匹配,所以,可以设置为一些不在图G中的边的边权为0。#include <iostream>...原创 2019-12-18 23:55:47 · 181 阅读 · 0 评论 -
Interesting Housing Problem 【HDU - 2426】【KM算法】
HDU - 2426 经过这一道题,对KM有了更多的理解,首先,KM是一个完美匹配,也就是说,对于一个二分图的两边,X边和Y边,我们应当保证X边的点数与Y边的点数的数量是相等的,当然,我们以“少补”的策略来解决这个问题的。 然后,就是这道题了。 每一个人都不想去住自己不喜欢的房子,没有一个人会住自己不喜欢的房子,所以一旦有人要住自己不喜欢的房子,或者房子的数量不够的话,就是输出“...原创 2019-12-18 21:58:47 · 154 阅读 · 0 评论 -
Going Home 【HDU - 1533】【KM算法】
有N个房子,N个人,每个人到房子都有对应的路径,问每个人去往不同的房子居住,所需要的最短的路径。很显然,求最小权完美匹配问题,直接把边设置为负数,然后跑一遍KM即可,此处用的是BFS优化的KM算法。#include <iostream>#include <cstdio>#include <cmath>#include <string>...原创 2019-12-18 20:29:21 · 195 阅读 · 0 评论 -
二分图最大权匹配【KM算法 BFS优化下的真正的O(N3)的KM算法】【KM算法模板】
很多人都知道的,要想真正知道你的KM算法是不是真实的,那么不妨用这道题来验证:UOJ #80. 二分图最大权匹配 如果你使用的是DFS,那么你的代码会TLE在第38组:#include <iostream>#include <cstdio>#include <cmath>#include <string>#include &l...原创 2019-12-04 23:40:39 · 1887 阅读 · 4 评论