Golden Tiger Claw UVA - 11383(km原理)
这题使我对km多了一些看法
写给自己看。。
km结束后bx[i] + by[j] == w[i][j], 所以所有bx与by的和即为w的和
而且记住bx[i] + by[j] >= w[i][j] 这个式子 那么bx与by的最小值 即为km结束后的值
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- #include <queue>
- #include <algorithm>
- #include <vector>
- #define mem(a, b) memset(a, b, sizeof(a))
- using namespace std;
- const int maxn = , INF = 0x7fffffff;
- int usedx[maxn], usedy[maxn], w[maxn][maxn], bx[maxn], by[maxn], cx[maxn], cy[maxn];
- int nx, ny, n, minn, min_value;
- bool dfs(int u)
- {
- usedx[u] = ;
- for(int i=; i<=ny; i++)
- {
- if(usedy[i] == -)
- {
- int t = bx[u] + by[i] - w[u][i];
- if(t == )
- {
- usedy[i] = ;
- if(cy[i] == - || dfs(cy[i]))
- {
- cy[i] = u;
- cx[u] = i;
- return ;
- }
- }
- else if(t > )
- minn = min(minn, t);
- }
- }
- return ;
- }
- int km()
- {
- mem(cx, -);
- mem(cy, -);
- mem(bx, -);
- mem(by, );
- for(int i=; i<=nx; i++)
- for(int j=; j<=ny; j++)
- bx[i] = max(bx[i], w[i][j]);
- for(int i=; i<=nx; i++)
- {
- while()
- {
- minn = INF;
- mem(usedx, -);
- mem(usedy, -);
- if(dfs(i)) break;
- for(int j=; j<=nx; j++)
- if(usedx[j] != -) bx[j] -= minn;
- for(int j=; j<=ny; j++)
- if(usedy[j] != -) by[j] += minn;
- }
- }
- min_value = ;
- for(int i=; i<=n; i++)
- if(cx[i] != -)
- min_value += w[i][cx[i]];
- return min_value;
- }
- int main()
- {
- while(~scanf("%d",&n))
- {
- for(int i=; i<=n; i++)
- for(int j=; j<=n; j++)
- scanf("%d",&w[i][j]);
- nx = ny = n;
- int ans = km();
- for(int i=; i<=nx; i++)
- {
- if(i != ) printf(" ");
- printf("%d", bx[i]);
- }
- printf("\n");
- for(int i=; i<=ny; i++)
- {
- if(i != ) printf(" ");
- printf("%d", by[i]);
- }
- printf("\n");
- cout<< ans <<endl;
- }
- return ;
- }
Golden Tiger Claw UVA - 11383(km原理)的更多相关文章
- uva11383 Golden Tiger Claw 深入理解km算法
/** 题目: uva11383 Golden Tiger Claw 深入理解km算法 链接:https://vjudge.net/problem/UVA-11383 题意:lv 思路:lrj训练指南 ...
- 【UVA11383】 Golden Tiger Claw 【二分图KM算法(板子)】
题目 题目传送门:https://www.luogu.com.cn/problem/UVA11383 分析 最近刚刚学了二分图,然后来了一个这样的题,看完题意之后,稍微想一想就能想出来是一个二分图,然 ...
- 【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),求一种方案,而且全部行列 ...
- UVA11383 Golden Tiger Claw
题目 UVA11383 Golden Tiger Claw 做法 \(KM\)好题啊,满足所有边\(l(x)+l(y)≥w(x,y)\)(个人理解,如不对请及时留言),这样能满足\(\sum\limi ...
- Golden Tiger Claw(二分图)
Golden Tiger Claw 题意 找到和最小的两个序列a,b满足对于任意i,j有a[i]+b[j]>=c[i][j](矩阵c给出). solution 裸的二分图就水过了-- #incl ...
- UVA 11383 Golden Tiger Claw 金虎爪(KM算法)
题意: 给一个n*n的矩阵,每个格子中有正整数w[i][j],试为每行和每列分别确定一个数字row[i]和col[i],使得任意格子w[i][j]<=row[i]+col[j]恒成立.先输row ...
- 【KM算法】UVA 11383 Golden Tiger Claw
题目大意 给你一个\(n×n\)的矩阵G,每个位置有一个权,求两个一维数组\(row\)和\(col\),使\(row[i] + col[j]\ge G[i][j]\),并且\(∑row+∑col\) ...
- Uva - 11383 - Golden Tiger Claw
题意:一个N*N的矩阵,第i行第j列的元素大小为w[i][j],每行求一个数row[i],每列求一个数col[j],使得row[i] + col[j] >= w[i][j],且所有的row[]与 ...
随机推荐
- js Date对象要注意的问题(时间转换)
1.时间戳和时间对象可以灵活转变: let n = new Date() // 返回的是当前时间对应的国际时间 let nt =n.getTime() let n2 =new Date(nt) con ...
- STM32L431驱动带UC1698芯片调试记录
1, 数据线连接方式,这次使用的是8080格式的接口,如下 2. 主要是信号和数据引脚 DATA0-DATA7 并口的数据 RST 复位信号 WR 写信号 RD 读信号 C/D 数据还是命令 CS片 ...
- 单元测试或main方法 进行单元测试时 idea检查其他类的语法是否正确的去除方法
在进行单元测试或者main方法时,在 运行/调试 设置中设置想要使用的测试单位的 before launch 即可
- 详细讲解 A/B 测试关键步骤,快来检查下还有哪些疏漏的知识点
作为一种对照实验方法,A/B 测试通过比较两个 (或多个) 不同版本之间的差异来验证假设是否正确.该方法将特定测试组从实验其余部分中独立出来,从而得出可靠结果.在被测人不知情且测试场景真实的情况下,A ...
- centos 7 安装和基本配置
U盘安装centos 7 还是官方文档最准确. 下载centos https://docs.centos.org/en-US/centos/install-guide/downloading/ 制作安 ...
- 3星|《给你讲个笑话:我是创业公司CEO》:创业成功就是上帝掷骰子
给你讲个笑话:我是创业公司CEO 作者有过数次创业经历,最后一次在济南创业,后来公司搬到北京,看书中的交代公司目前好像还不算太成功.书中交代作者公司的业务是文化产品的策划,没细说做什么,也没说做成过哪 ...
- 用 Python 构建一个极小的区块链
虽然有些人认为区块链是一个早晚会出现问题的解决方案,但是毫无疑问,这个创新技术是一个计算机技术上的奇迹.那么,究竟什么是区块链呢? 区块链 以比特币(Bitcoin)或其它加密货币按时间顺序公开地记录 ...
- 关于JavaScript定时器我的一些小理解
因为自己在平时工作中,有些功能需要用到定时器,但是定时器并不像我们表边上看到的那样,所以这周末我看看书查查资料,深入研究了一下JavaScript中的定时器,那么废话不多说,下面进入我们今天的正题. ...
- C++ STL 全排列
摘自爱国师哥博客https://www.cnblogs.com/aiguona/p/7304945.html 一.概念 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元 ...
- Java接口interface,匿名内部类
接口 1.接口内部为 常量+公用的抽象方法.类必须实现接口中的所有方法 2.接口的语法格式:不写abstract会自动添加,可以继承多个接口 修饰符不能使private,protected [修饰符] ...