hdu 2853 Assignment (KM算法)
来源:互联网 发布:mac怎么在pdf上写字 编辑:程序博客网 时间:2024/06/06 01:13
题目描述
传送门
题解
KM算法
代码
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define N 320#define inf 1000000000using namespace std;int n,m,pdx[N],pdy[N],cx[N],cy[N],belong[N],slack[N],val[N][N];bool dfs(int x){ pdx[x]=1; for (int i=1;i<=m;i++) { if (pdy[i]) continue; int gap=cx[x]+cy[i]-val[x][i]; if (!gap) { pdy[i]=1; if (!belong[i]||dfs(belong[i])) { belong[i]=x; return true; } }else slack[i]=min(gap,slack[i]); } return false;}int km(){ memset(belong,0,sizeof(belong)); memset(cy,0,sizeof(cy)); for (int i=1;i<=n;i++) { cx[i]=val[i][1]; for (int j=2;j<=m;j++) cx[i]=max(cx[i],val[i][j]); } for (int i=1;i<=n;i++) { for (int j=1;j<=m;j++) slack[j]=inf; while (true) { memset(pdx,0,sizeof(pdx)); memset(pdy,0,sizeof(pdy)); if (dfs(i)) break; int d=inf; for (int j=1;j<=m;j++) if (!pdy[j]) d=min(d,slack[j]); for (int j=1;j<=n;j++) if (pdx[j]) cx[j]-=d; for (int j=1;j<=m;j++) if (pdy[j]) cy[j]+=d; else slack[j]-=d; } } int ans=0; for (int i=1;i<=m;i++) ans+=val[belong[i]][i]; return ans;}int main(){ freopen("a.in","r",stdin); while (scanf("%d%d",&n,&m)!=EOF) { for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) scanf("%d",&val[i][j]),val[i][j]*=10000; int sum=0; for (int i=1;i<=n;i++) { int x; scanf("%d",&x); sum+=val[i][x]; val[i][x]++; } sum/=10000; int ans=km(); printf("%d %d\n",n-ans%10000,ans/10000-sum); } }
0 0
- HDU 2853 Assignment (KM算法)
- hdu 2853 Assignment (KM算法)
- HDU -- 2853 Assignment 【思维 + KM算法】
- HDU 2853 Assignment KM
- hdu 2853 Assignment (KM小变异)
- HDU 2853 Assignment(KM匹配)
- HDU 2853 Assignment(KM最大匹配好题)
- Assignment (HDU 2853 最大权匹配KM)
- hdu 2853 Assignment KM好题
- hdu 2853 Assignment【KM+思维】好题
- HDU_2853 Assignment KM算法
- HDU 2255 (KM算法)
- 【KM匹配】 HDOJ 2853 Assignment
- HDU Assignment(KM变形好题!!!!)
- HDU2853 Assignment KM算法 巧妙变化
- HDU 2853 Assignment([好题] 求KM最大时,要求改动最少★★)
- hdu 2255(KM算法模板)
- hdu-2255(KM算法模板)
- opencv笔记(2):图像形态学
- Java内存分配分析
- 链接脚本简介
- linux压缩与解压命令
- java 使用 comet4j 主动向客户端推送信息 简单例子
- hdu 2853 Assignment (KM算法)
- PHP文件写入函数file_put_contents并发追加写入丢失内容问题解决方法
- Java编程思想-03操作符
- HDU 2602 Bone Collector
- 《机器学习实战》学习笔记---Logister回归
- java.util.Stack里Stack默认容量有多大?
- 流程
- hdu 2255 奔小康赚大钱 (KM算法)
- comet4j 一个简单的实例