poj2400Supervisor, Supervisee(KM)】的更多相关文章

http://poj.org/problem?id=2400 KM算法http://philoscience.iteye.com/blog/1754498 题意:每个雇主对雇员有个满意度 雇员对雇主有个满意度 求最匹配的雇员与雇主 最小权匹配 这个给出的数据矩阵貌似是反着的 建图的时候反一下就好了 #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> #inclu…
最短路径: poj1125 - Stockbroker Grapevine(多源最短路径,floyd) poj1502 - MPI Maelstrom(单源最短路径,dijkstra,bellman-ford,spfa) poj1511 - Invitation Cards(单源来回最短路径,spfa邻接表) poj1797 - Heavy Transportation(最大边,最短路变形,dijkstra,spfa,bellman-ford) poj2240 - Arbitrage(汇率问题,…
[POJ 2400] Supervisor, Supervisee(KM求最小权匹配) Supervisor, Supervisee Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2538   Accepted: 719 Description Suppose some supervisors each get to hire a new person for their department. There are N…
題目鏈接 題意 :N个部门和N个员工,每个部门要雇佣一个工人,部门对每个工人打分,从1~N,1表示很想要,N表示特别不想要,每个工人对部门打分,从1~N.1表示很想去这个部门,N表示特别不想去这个部门,求一个匹配,使每个人的希望值最大. 思路 :KM算法.资料.用深搜构造所有能达到最大值的匹配情况.参考 #include <stdio.h> #include <string.h> #include <iostream> using namespace std ; ; i…
题意:n个老板n个员工,先给你n*n的数据,i行j列代表第i个老板第j喜欢的员工是谁,再给你n*n的数据,i行j列代表第i个员工第j喜欢的老板是谁,如果匹配到第k喜欢的人就会产生一个分数k-1.现在让你给老板和员工配对,希望得到的分数的平均数最少,并给出哪个老板匹配哪个员工,多种情况按字典序输出. 思路:题目中的input提示是错的... 这题就是km最大权值匹配的裸题,分数最小那就把权值变负,然后跑出最少的总分.因为n比较小,可以dfs求出所有情况. 代码: #include<set> #i…
转自:http://blog.csdn.net/shahdza/article/details/7779324 [HDU]2255 奔小康赚大钱 模板题★1533 Going Home 模板题★2426 Interesting Housing Problem KM★3395 Special Fish KM★2282 Chocolate KM★2813 One fihgt one KM★1853 Cyclic Tour 最小费用圈覆盖★★3488 Tour 最小费用圈覆盖★★3435 A new…
匈牙利算法 var i,j,k,l,n,m,v,mm,ans:longint; a:..,..]of longint; p,f:..]of longint; function xyl(x,y:longint):boolean; var i,j,k,l:longint; begin if f[x]=y then exit(false); f[x]:=y; to m do ))or(xyl(p[i],y)))then begin p[i]:=x; exit(true); end; exit(fals…
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子. 这可是一件大事,关系到人民的住房问题啊.村里共有n间房间,刚好有n家老百姓,考虑到每家都要有房住(如果有老百姓没房子住的话,容易引起不安定因素),每家必须分配到一间房子且只能得到一间房子. 另一方面,村长和另外的村…
二分图最大权值匹配问题.用KM算法. 最小权值的时候把权值设置成相反数 /*--------------------------------------------------------------------------------------*/ #include <algorithm> #include <iostream> #include <cstring> #include <ctype.h> #include <cstdlib>…
var n,m,i,j:longint; ans:int64; sel,lx,ly,slack:..] of int64; a:..,..] of int64; visx,visy:..] of boolean; function dfs(po:longint):boolean; var i:longint; t:int64; begin visx[po]:=true; to m do if visy[i]=false then begin t:=lx[po]+ly[i]-a[po,i]; th…
感谢  http://www.cnblogs.com/vongang/archive/2012/04/28/2475731.html 这篇blog里提供了3个链接……基本上很明白地把KM算法是啥讲清楚了 然而n^4的KM好像并没有什么卵用啊……所以不得不学n^3的 我看了一下各种,大部分blog里写的声称是n^3的KM,其实貌似都是n^4的(包括上面的链接以及上面链接里提供的链接) 这是因为他们有个共同点 他们虽然用slack数的优化组避免了暴力枚举d所消耗的时间,但由于一次增广是n^2的,所以…
http://acm.hdu.edu.cn/showproblem.php?pid=2853 这道题初看了没有思路,一直想的用网络流如何解决 参考了潘大神牌题解才懂的 最大匹配问题KM 还需要一些技巧来解决最小变动, 做法是:把原先的邻接矩阵每个数扩大k倍(k>n) 为了突出原先的选择,也就是同等情况下优先选择原来的方案 给原来的方案对应矩阵内的数据+1 那么 最终得出的最大匹配值/k=真实的最大匹配 最终得出的最大匹配值%k=原来的方案采用了几个 这里的KM留下来做模板 /* 二分图最佳匹配…
KM算法:hdu2255 (大概理解了 参考博客: http://blog.csdn.net/niushuai666/article/details/7171880)         所谓交错树:就是已经匹配好的.(我自己理解的)         交错树中的X集合和不在交错树中的Y集合去找:d=min(lx[i]-map[i][j]); 然后交错树中的x顶点-d,交错树中的Y顶点+d:         其实核心还是逐步找最优解的过程.         还有一个知识点: Tutte定理:一个图G有…
题意: 给一张二分图,每个点与两个特定点又一条边相连,边权非负,让你给这个二分图每个点一个顶标,让每一条边两端顶标和大于等于这条边.求出最小顶标和. 这当然是翻译过的题目... 原题: 小Y和小P无聊的时候就喜欢玩游戏,但是每次小P都输给了小Y.终于有一天,你看不过去了,决定帮小P一把. 游戏是这样的,一个N*M的棋盘(保证n或m中,至少有一个为偶数).相邻格子之间有一个给定的正整数权值.要你给这些格子填上一些值,使得相邻两个格子本身的权值之和,要大于等于他们之间给定的权值.并且要使得所有格子权…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2853 题目大意:二分图匹配费用流.①最大匹配②最小原配变动 解题思路: 如果去掉第二个要求,那么就是裸KM. 然而加上第二个要求,那么就需要一种新的建图方式. 建图 对于输入矩阵,每一条边,cost扩大K倍($K=n+1$) 对于原配,每一条边cost在扩大K倍基础上+1 KM 统计cost时,直接把cost整除K,然后累加. 并且Hash一下原配边的变动情况. 扩大K倍的作用 准确来说,K倍是为了…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2853 题意:有n个公司,m个任务,每个公司做每个任务都有一个效率值,最开始每个公司都指派了一个任务,现在要你重新给每个公司分配一个任务(一个任务只能分配给一家公司),使得所有公司任务的效率值最大,并且改变的原始任务最少. 思路:把每条边的权值扩大k倍(k>n),然后属于原始任务的边权值+1,权值加1是为了当两条边权值相同时,更优先选择属于原始任务的边,扩大k倍的巧妙之处不仅在于KM匹配时优先选择原始…
在网上找了一份挺好的模板,先标一下哦~链接君:http://blog.csdn.net/abcjennifer/article/details/5844579 #include <iostream> #include <string.h> #include <algorithm> #include <iostream> using namespace std; int max(int a,int b) {return a<b?b:a;} int min…
http://acm.split.hdu.edu.cn/showproblem.php?pid=2255 带权匹配问题: #include <stdio.h> #include <algorithm> #include <string.h> #include <vector> using namespace std; #define maxn 330 #define INF 0xfffffff int maps[maxn][maxn], vx[maxn],…
题目链接:http://poj.org/problem?id=2195 KM算法模板~ 代码如下: #include "stdio.h" #include "string.h" #include "queue" #include "math.h" using namespace std; #define N 210 #define INF 0x3fffffff struct node{ int u,v,w,k; int nex…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2255 题意:有N个人跟N个房子,每个人跟房子都有一定的距离,现在要让这N个人全部回到N个房子里面去,要求所有人回去的距离最短. KM算法模板题~ #include "stdio.h" //hdu 2255 #include "string.h" #include "stdlib.h" #define N 305 #define INF 0x3ffff…
百科:http://baike.baidu.com/link?url=vbM3H4XmfrsWfP-epdlR2sVKSNzOq4hXnWDqm5uo8fd7VWsF2SmhDV35XyVUDvVjvrtf42RUITJuNCHn-7_x6K 大神总结:http://www.cnblogs.com/skyming/archive/2012/02/18/2356919.html 代码: #include<stdio.h> #include<string.h> ,INF=0x3f3f3…
//hdu1853 #include<stdio.h> #include<string.h> #define INF 99999999 ][],pr[],pl[],visr[],visl[],slack[],match[]; int n,m; int dfs(int u) { int i,j,val; visl[u]=; ;i<=n;i++) { if(!visr[i]) { val=pr[i]+pl[u]-map[u][i]; ) { visr[i]=; ||dfs(mat…
题意: 有n个订单,m个工厂,第i个订单在第j个工厂生产的时间为t[i][j],一个工厂可以生产多个订单,但一次只能生产一个订单,也就是说如果先生产a订单,那么b订单要等到a生产完以后再生产,问n个订单用这m个工厂全部生产完需要最少的时间是多少. SOL: 与平时的带权二分图不同的是这个问题相当于一个多重匹配的问题,且每个点的权值需要考虑它之前的点,其实可以比如说每个工厂搞一个set什么的维护一下然后乱搞(不知道行不行看着好像挺好). 正这考虑不是很方便于是我们可以反着来,最后被生产的点只需要它…
题意: 给你一张二分图,给一个原匹配,求原匹配改动最少的边数使其边权和最大. SOL: 我觉得我的智商还是去搞搞文化课吧..这种题给我独立做我大概只能在暴力优化上下功夫.. 这题的处理方法让我想到了剩余系..貌似就是它.. 我们将每条边的边权扩大n+1倍——是不是有点雾,同时将原匹配边的边权再加1. 非常玄学!这样做有什么道理呢?它保证了最优匹配在这样更改后仍是最优的!我们假设次优解比最优解只小1,在乘上n+1后差距被放大到n+1,即使次优解全由原匹配边组成,加上n仍小于最优解,那么我们就一定能…
题意: 给你一个N个点M条边的带权有向图,现在要你求这样一个值:该有向图中的所有顶点正好被1个或多个不相交的有向环覆盖.这个值就是 所有这些有向环的权值和. 要求该值越小越好. SOL: 本来还想tarjan什么的,就是不能往二分图上靠...然后看了二分图的建图觉得非常神奇.我们可以把一个点O拆成两个点O和O‘,发现一个点i如果能到点j,那么我们就将i与j’建一条边,然后构成整张图后S与S‘分别为两个集合来跑KM.正确性现在还有点晕,先挖个坑 领悟到建图的重要性,做得题太少还是太年轻. #inc…
题意 求二分图最小完备匹配. SOL 建个图那么方便的事情是吧...然后边权都是正的(好像根边权也没什么关系),既然要求最小那么把边权取个相反数跑个KM就好了.. CODE: /*========================================================================== # Last modified: 2016-02-16 19:55 # Filename: hdu1533.cpp # Description: ============…
题意: 一张完备二分图求最优完备匹配. SOL: 这题就不讲什么sol了...毕竟是裸的KM,不会的话可以看老人家的大白鼠,一些问题看代码注释.讲讲经历(悲惨的经历) 刚打完,自信地交上去发现MLE...一脸大雾...然后才开始看数据..300^4啊...看起来会炸的样子,那么加个优化好了.还是MLE!真是奇了怪了.然后就在提交里看别人是不是用的邻接表——清一色邻接矩阵!再想想KM搞的都是完备图啊邻接表和邻接矩阵用起来没什么不同.那么没问题啊?然后交来交去交了8次...直到zyh大神——虽然他从…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1853 Cyclic Tour Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/65535 K (Java/Others)Total Submission(s): 2289    Accepted Submission(s): 1162 Problem Description There are N cities in our…
题目链接 The Windy's | Time Limit: 5000MS | Memory Limit: 65536K | | Total Submissions: 4939 | Accepted: 2080 | Description The Windy's is a world famous toy factory that owns M top-class workshop to make toys. This year the manager receives N orders for…
题目链接 奔小康赚大钱 Time Limit: 1000/1000MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7350 Accepted Submission(s): 3263 Problem Description 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子. 这可是一件大事,关系到人民的住房问题啊.村里共有n间房间,刚好有n家老百姓,考虑到…