题意:

问男孩女孩最大的可能值?其实就是一个二分图的最大权值匹配问题;模板题吧。。

  1. #include<cstdio>
  2. #include<math.h>
  3. #include<queue>
  4. #include<map>
  5. #include<string>
  6. #include<string.h>
  7. #include<iostream>
  8. #include<algorithm>
  9. using namespace std;
  10. typedef long long LL;
  11. const int INF=0x3f3f3f3f;
  12. const LL mod=1e9+7;
  13.  
  14. const int N=20;
  15. int ma[N][N];
  16. int lx[N],ly[N],match[N];
  17. bool vx[N],vy[N];
  18. int n,d;
  19.  
  20. bool Findpath(int u)
  21. {
  22. vx[u]=1;
  23. for(int i=1;i<=n;i++)
  24. {
  25. if(vy[i]) continue;
  26. int temp=lx[u]+ly[i]-ma[u][i];
  27. if(temp==0)
  28. {
  29. vy[i]=1;
  30. if(match[i]==-1||Findpath(match[i]))
  31. {
  32. match[i]=u;
  33. return true;
  34. }
  35. }
  36. else if(d>temp)
  37. d=temp;
  38. }
  39. return false;
  40. }
  41.  
  42. int KM()
  43. {
  44. memset(match,-1,sizeof(match));
  45. memchr(lx,0,sizeof(lx));
  46. memset(ly,0,sizeof(ly));
  47.  
  48. for(int i=1;i<=n;i++)
  49. for(int j=1;j<=n;j++)
  50. lx[i]=max(lx[i],ma[i][j]);
  51. for(int i=1;i<=n;i++)
  52. {
  53. while(1)
  54. {
  55. memset(vx,0,sizeof(vx));
  56. memset(vy,0,sizeof(vy));
  57. d=INF;
  58. if(Findpath(i))
  59. break;
  60. for(int j=1;j<=n;j++)
  61. {
  62. if(vx[j]) lx[j]-=d;
  63. if(vy[j]) ly[j]+=d;
  64. }
  65. }
  66. }
  67. int res=0;
  68. for(int i=1;i<=n;i++)
  69. res+=ma[match[i]][i];
  70. return res;
  71. }
  72.  
  73. int main()
  74. {
  75. int cas=1,T;
  76. scanf("%d",&T);
  77. while(T--)
  78. {
  79. scanf("%d",&n);
  80. for(int i=1;i<=n;i++)
  81. for(int j=1;j<=n;j++)
  82. {
  83. scanf("%d",&ma[i][j]);
  84. }
  85. printf("Case %d: ",cas++);
  86. printf("%d\n",KM());
  87. }
  88. return 0;
  89. }

Lightoj1011【KM算法】的更多相关文章

  1. 匈牙利算法与KM算法

    匈牙利算法 var i,j,k,l,n,m,v,mm,ans:longint; a:..,..]of longint; p,f:..]of longint; function xyl(x,y:long ...

  2. 【HDU2255】奔小康赚大钱-KM算法

    Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description ...

  3. HDU2255-奔小康赚大钱-二分图最大权值匹配-KM算法

    二分图最大权值匹配问题.用KM算法. 最小权值的时候把权值设置成相反数 /*-------------------------------------------------------------- ...

  4. KM算法及其优化的学习笔记&&bzoj2539: [Ctsc2000]丘比特的烦恼

    感谢  http://www.cnblogs.com/vongang/archive/2012/04/28/2475731.html 这篇blog里提供了3个链接……基本上很明白地把KM算法是啥讲清楚 ...

  5. poj 2195 KM算法

    题目链接:http://poj.org/problem?id=2195 KM算法模板~ 代码如下: #include "stdio.h" #include "string ...

  6. hdu 2255 奔小康赚大钱--KM算法模板

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2255 题意:有N个人跟N个房子,每个人跟房子都有一定的距离,现在要让这N个人全部回到N个房子里面去,要 ...

  7. HDU(2255),KM算法,最大权匹配

    题目链接 奔小康赚大钱 Time Limit: 1000/1000MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Su ...

  8. 二分图 最大权匹配 km算法

    这个算法的本质还是不断的找增广路: KM算法的正确性基于以下定理:若由二分图中所有满足A[i]+B[j]=w[i,j]的边(i,j)构成的子图(称做相等子图)有完备匹配,那么这个完备匹配就是二分图的最 ...

  9. hdu 2255 奔小康赚大钱 KM算法

    看到这么奇葩的题目名我笑了,后来这么一个裸的KM调了2小时我哭了…… 这是个裸的KM算法,也没什么多说的,主要是注意多组数据时,每次都要把各种数组清空啊,赋值啊什么的,反正比较麻烦.至于为什么调了2小 ...

  10. hdu 2853 Assignment KM算法

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2853 Last year a terrible earthquake attacked Sichuan ...

随机推荐

  1. 使用C#解决部分Win8.1系统窗体每隔几秒失去焦点的问题

    使用了Win8.1 With Update 1后,发现重新启动系统后,当前激活的窗体总是每隔几秒失去焦点.过0.5~1秒焦点回来.导致输入无法正常工作,严重影响使用心情和效率. 在网上找了非常久,也没 ...

  2. 九度OJ 1131:合唱队形 (DP、最长上升下降序列)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2865 解决:881 题目描述: N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形. ...

  3. [数据挖掘课程笔记]SLIQ算法

    1.数据结构 主要的数据结构有:1.Attribute List  2.Class List 对于数据集,每一个属性都有一个对应的Attribute List.如上图所示,每个Attribute Li ...

  4. office web apps的搭建部署(1)(写于2017.12.27)

    因为业务方面的需求,项目要求搭建office-web-apps这个玩意儿,做一个在线预览编辑的功能,为了方便,我下面都用OWA代替这个服务. 首先说一下什么是office-web-apps-serve ...

  5. ThinkPHP RBAC权限管理机制

    RBAC是ThinkPHP很好用的后台权限管理的,话不多说,实现方法如下,也方便以后自己查询使用: 1.新建4个数据库表 self_role权限表 CREATE TABLE `self_role` ( ...

  6. zookeeper+dubbo【转载】

    转载地址:http://ahua186186.iteye.com/blog/1912421 注:zookeeper集群是myid文件是没有后缀名的. 转自: http://www.verydemo.c ...

  7. AutoItLibrary安装和常见问题解决

    http://blog.csdn.net/bible_reader/article/details/52044345

  8. 存储过程系列三:根据表别名方式distinct去重插入

    1.根据表别名方式distinct去重插入 insert into GG_XKZ_YLQXSCXKESL_SCDZ           ( bzj, xkzid,  sqid, jtdz, szsf, ...

  9. 编码 —— PCM 编码

    PCM:Pulse Code Modulation,脉冲编码调制: 1. 码率的计算 PCM约定俗成了无损编码,因为PCM代表了数字音频中最佳的保真水准,并不意味着PCM就能够确保信号绝对保真,PCM ...

  10. Opencv— — Bias and Gain

    // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...