[洛谷 P1559] 运动员最佳匹配问题
题目描述
羽毛球队有男女运动员各n人。给定2 个n×n矩阵P和Q。P[i][j]是男运动员i和女运动员j配对组成混合双打的男运动员竞赛优势;Q[i][j]是女运动员i和男运动员j配合的女运动员竞赛优势。由于技术配合和心理状态等各种因素影响,P[i][j]不一定等于Q[j][i]。男运动员i和女运动员j配对组成混合双打的男女双方竞赛优势为P[i][j]*Q[j][i]。设计一个算法,计算男女运动员最佳配对法,使各组男女双方竞赛优势的总和达到最大。
输入输出格式
输入格式:
第一行有1 个正整数n (1≤n≤20)。接下来的2n行,每行n个数。前n行是p,后n行是q。
输出格式:
将计算出的男女双方竞赛优势的总和的最大值输出。
输入输出样例
3 10 2 3 2 3 4 3 4 5 2 2 2 3 5 3 4 5 1
52
二分图带权值匹配的经典问题。n非常小,乱搞都可以。但是还是自觉滴刷了KM,自我感觉还不错。。。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
;
int n,p[N][N],q[N][N],w[N][N],decrs;
int fx[N],fy[N],slack[N],lnk[N];
bool vx[N],vy[N];
bool KM(int i){
vx[i]=;
; j<=n; j++)
if (fx[i]+fy[j]==w[i][j]&&!vy[j]){
vy[j]=;
if (!lnk[j]||KM(lnk[j])){
lnk[j]=i; ;
}
}else if (fx[i]+fy[j]!=w[i][j]) decrs=min(decrs,fx[i]+fy[j]-w[i][j]);
;
}
int main(){
cin>>n;
; i<=n; i++)
; j<=n; j++) cin>>p[i][j];
; i<=n; i++)
; j<=n; j++) cin>>q[i][j];
; i<=n; i++)
; j<=n; j++) w[i][j]=p[i][j]*q[j][i];
; i<=n; i++){
fx[i]=; ; j<=n; j++) fx[i]=max(fx[i],w[i][j]);
}
memset(fy,,sizeof fy);
memset(lnk,,sizeof lnk);
; i<=n; i++)
for (; ;){
memset(vx,,sizeof vx);
memset(vy,,sizeof vy);
decrs=1e9; if (KM(i)) break;
; j<=n; j++){
if (vx[j]) fx[j]-=decrs;
if (vy[j]) fy[j]+=decrs;
}
}
;
; i<=n; i++) ans+=fx[i]+fy[i];
printf("%d",ans);
;
}
[洛谷 P1559] 运动员最佳匹配问题的更多相关文章
- 洛谷p1559运动员最佳匹配问题
题目 搜索 可行性剪枝 虽然这题目是我搜二分图的标签搜到的 但是n比较小 明显可以暴力 然而只有80分 再加上可行性剪纸就行啦 就是记所有运动员他所能匹配到的最大值. 在我们搜索到第i层的时候 如果他 ...
- P1559 运动员最佳匹配问题[最大费用最大流]
题目描述 羽毛球队有男女运动员各n人.给定2 个n×n矩阵P和Q.P[i][j]是男运动员i和女运动员j配对组成混合双打的男运动员竞赛优势:Q[i][j]是女运动员i和男运动员j配合的女运动员竞赛优势 ...
- 【题解】P1559 运动员最佳匹配问题
[题目](https://www.luogu.com.cn/problem/P1559) 题目描述 羽毛球队有男女运动员各n人.给定2 个n×n矩阵P和Q.P[i][j]是男运动员i和女运动员j配对组 ...
- P1559 运动员最佳匹配问题
题目描述 羽毛球队有男女运动员各n人.给定2 个n×n矩阵P和Q.P[i][j]是男运动员i和女运动员j配对组成混合双打的男运动员竞赛优势:Q[i][j]是女运动员i和男运动员j配合的女运动员竞赛优势 ...
- KM模板 最大权匹配(广搜版) Luogu P1559 运动员最佳匹配问题
KM板题: #include <bits/stdc++.h> using namespace std; inline void read(int &num) { char ch; ...
- P1559 运动员最佳匹配问题 by hyl 天梦
#include<iostream> using namespace std; int n; int maxx[21][21]; int lie[21]; int aa[21]; int ...
- Luogu 1559 运动员最佳匹配问题(带权二分图最大匹配)
Luogu 1559 运动员最佳匹配问题(带权二分图最大匹配) Description 羽毛球队有男女运动员各n人.给定2 个n×n矩阵P和Q.P[i][j]是男运动员i和女运动员j配对组成混合双打的 ...
- 运动员最佳匹配问题 KM算法:带权二分图匹配
题面: 羽毛球队有男女运动员各n人.给定2 个n×n矩阵P和Q.P[i][j]是男运动员i和女运动员j配对组成混合双打的男运动员竞赛优势:Q[i][j]是女运动员i和男运动员j配合的女运动员竞赛优势. ...
- 运动员最佳匹配问题(km算法)
洛谷传送门 带权二分图最大权完美匹配. 裸的km算法. 注意开long long. #include <cstdio> #include <cstring> #include ...
随机推荐
- UVa 11488 超级前缀集合(Trie的应用)
https://vjudge.net/problem/UVA-11488 题意: 给定一个字符串集合S,定义P(s)为所有字符串的公共前缀长度与S中字符串个数的乘积.比如P( {000, 001, 0 ...
- ArrayList.clear、=null、new Arraylist之间的对比区别
参考博文 1.使用ArrayList的对象方法clear() List list = new ArrayList(); List list1 = list; list.add(1); list.add ...
- dataTables使用整理(一)
初次使用dataTables,对一些用到的属性及遇到的问题做一个简要的记录 参考资料: http://blog.csdn.net/mickey_miki/article/details/8240477 ...
- mongodb,Mysql,redis基础教程
数据库基础 1:mongodb基础教程 1:pymongo基础教程 2:Mysql基础教程 3:redis基础教程
- Springboot+JdbcTemplate +thymeleaf 页面 做迷你版的bug系统
https://www.cnblogs.com/qianjinyan/p/10065160.html 在我上一篇随笔中介绍了关于要做的系统的数据结构,连接如上 今天实现连接mssql server, ...
- 1.1.1 vue-cli脚手架工具
参考文档: windows下npm安装vue(以下教程大部分都是参考这篇博客的,按照着这篇博客自己实现了一遍) npm安装vue-cli脚手架 一.前言 npm:nodejs下的包管理器,安装好nod ...
- SqlServer中exists和in的区别
1.in 2.exists
- 力扣(LeetCode)191. 位1的个数
编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量). 示例 1: 输入:00000000000000000000000000001011 输出:3 ...
- 力扣(LeetCode)7.整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: ...
- ubuntu 安装cuda 9.1 pytorch 0.3.0
毕业再没用配过机器学习的环境了,既亲切又陌生,久违了. 系统 mint18 x64 1安装cuda 按官网提示 选的9.1版 https://developer.nvidia.com/cuda-t ...