UVA11383 Golden Tiger Claw
题目
做法
\(KM\)好题啊,满足所有边\(l(x)+l(y)≥w(x,y)\)(个人理解,如不对请及时留言),这样能满足\(\sum\limits_i^n(l(x)+l(y))\)最小值
My complete code
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL maxn=1e3,inf=0x3f3f3f3f;
LL n,mi;
LL lx[maxn],ly[maxn],w[maxn][maxn],mat[maxn];
bool S[maxn],T[maxn];
bool Match(LL u){
S[u]=true;
for(LL i=1;i<=n;++i){
if(!T[i]){
LL tmp(lx[u]+ly[i]-w[u][i]);
if(!tmp){
T[i]=true;
if(!mat[i] || Match(mat[i])){
mat[i]=u;
return true;
}
}
else
mi=min(mi,tmp);
}
}return false;
}
inline void Update(){
for(LL i=1;i<=n;++i)
if(S[i]) lx[i]-=mi;
for(LL i=1;i<=n;++i)
if(T[i]) ly[i]+=mi;
}
inline void KM(){
for(LL i=1;i<=n;++i){
mat[i]=lx[i]=ly[i]=0;
for(LL j=1;j<=n;++j)
lx[i]=max(lx[i],w[i][j]);
}
for(LL i=1;i<=n;++i){
while(true){
for(LL i=1;i<=n;++i)
S[i]=T[i]=false;
mi=inf;
if(Match(i)) break;
else Update();
}
}
}
int main(){
while(scanf("%d",&n)!=EOF&&n){
for(LL i=1;i<=n;++i)
for(LL j=1;j<=n;++j)
cin>>w[i][j];
KM();
LL ans(0);
for(LL i=1;i<=n;++i)
ans+=lx[i];
for(LL i=1;i<=n;++i)
ans+=ly[i];
printf("%d",lx[1]);
for(LL i=2;i<=n;++i)
printf(" %d",lx[i]);printf("\n");
printf("%d",ly[1]);
for(LL i=2;i<=n;++i)
printf(" %d ",ly[i]);printf("\n");
printf("%d\n",ans);
}return 0;
}
UVA11383 Golden Tiger Claw的更多相关文章
- uva11383 Golden Tiger Claw 深入理解km算法
/** 题目: uva11383 Golden Tiger Claw 深入理解km算法 链接:https://vjudge.net/problem/UVA-11383 题意:lv 思路:lrj训练指南 ...
- UVA11383 Golden Tiger Claw —— KM算法
题目链接:https://vjudge.net/problem/UVA-11383 题解: 根据KM()算法,标杆满足:l(x) + l(y) >= w(x, y) . 当求完最大权匹配之后,所 ...
- UVA-11383 Golden Tiger Claw (KM算法)
题目大意:一张可行二分图的权值以邻接矩阵的形式给了出来,现在要找每一个节点的可行顶标,使顶标和最小. 题目分析:直接用KM算法,结束后顶标之和最小...模板题. 代码如下: # include< ...
- UVA11383 Golden Tiger Claw KM算法
题目链接:传送门 分析 这道题乍看上去没有思路,但是我们仔细一想就会发现这道题其实是一个二分图最大匹配的板子 我们可以把这道题想象成将男生和女生之间两两配对,使他们的好感度最大 我们把矩阵中的元素\( ...
- 【UVA 11383】 Golden Tiger Claw (KM算法副产物)
Omi, Raymondo, Clay and Kimiko are on new adventure- in search of new Shen Gong Wu. But EvilBoy Geni ...
- UVA 11383 - Golden Tiger Claw(二分图完美匹配扩展)
UVA 11383 - Golden Tiger Claw 题目链接 题意:给定每列和每行的和,给定一个矩阵,要求每一个格子(x, y)的值小于row(i) + col(j),求一种方案,而且全部行列 ...
- Golden Tiger Claw(二分图)
Golden Tiger Claw 题意 找到和最小的两个序列a,b满足对于任意i,j有a[i]+b[j]>=c[i][j](矩阵c给出). solution 裸的二分图就水过了-- #incl ...
- 【UVA11383】 Golden Tiger Claw 【二分图KM算法(板子)】
题目 题目传送门:https://www.luogu.com.cn/problem/UVA11383 分析 最近刚刚学了二分图,然后来了一个这样的题,看完题意之后,稍微想一想就能想出来是一个二分图,然 ...
- UVA 11383 Golden Tiger Claw(最佳二分图完美匹配)
题意:在一个N*N的方格中,各有一个整数w(i,j),现在要求给每行构造row(i),给每列构造col(j),使得任意w(i,j)<=row(i)+col(j),输出row(i)与col(j)之 ...
随机推荐
- Hibernate每个子类一张表(使用注释)实例
在每个子类一张表的情况下,表是根据持久类创建的,但是它们使用主键和外键来重新定义. 所以关系中不会有重复的列. 我们需要在子类中的使用@PrimaryKeyJoinColumn注释和在父类指定@Inh ...
- 2015-2016ACM-ICPC NEER northern-subregional-contest C Concatenation
可以在这里提交: http://codeforces.com/gym/100801 题目大意: 给出两个由小写字母组成的字符串S,T,从S中取一个非空前缀,从T中取一个非空后缀,拼接成一个新的字符串. ...
- Apache:怎样利用.htaccess文件对PHP站点或文件进行伪静态处理
来源:http://www.ido321.com/1123.html 今天get了一招:利用.htaccess文件对PHP站点或文件进行伪静态处理. 一.检查server是否支持伪静态处理: 必需要空 ...
- jQuery实现限制文本框的输入长度
jQuery限制文本框输入,包含粘贴. //限制文本框的输入长度 $(function () { $(document).on("keypress", ".txt-va ...
- PHP和Java 加解密
http://www.jb51.net/article/64961.htm http://www.jb51.net/article/129218.htm http://www.jb51.net/art ...
- The server encountered an internal error that prevented it from fulfilling this request.(JsonMappingException: Conflicting getter definitions)
在测试一个方法,dubug查看查询结果已经出来了,结果页面上是The server encountered an internal error that prevented it from fulfi ...
- Android开发:《Gradle Recipes for Android》阅读笔记1.6——使用android studio添加依赖
有经验的gradle开发者习惯直接编辑build.gradle文件,但是IDE没有提供许多代码提示.IDE提供了一个可视的界面显示配置内容. 点击像文件夹一样的图标可以看到project struct ...
- jQuery倒计时实例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- oracelp---随意 记录(nvl)
1.Oracle的Nvl函数 nvl( ) 函数 从两个表达式返回一个非null 值. 语法 NVL(eExpression1, eExpression2) 参数 eExpression1, eExp ...
- C#设计模式-单实例
单例模式就是保证在整个应用程序的生命周期中,在任何时刻,被指定的类只有一个实例,并为客户程序提供一个获取该实例的全局访问点. 1.经典的模式 namespace singleClass { class ...