T66597 小xzy的任务 题解
T66597 小xzy的任务
题目背景
今天,小xzy的班主任交给他一个严肃的任务,匹配羽毛球运动员! ! !
题目描述
羽毛球队有男女运动员各n人。给定2个n×n矩阵P和Q。Pij是男运动员i和女运动员j配对组成混合双打的男运动员竞赛优势;Qij是女运动员ii和男运动员j配合的女运动员竞赛优势。由于技术配合和心理状态等各种因素影响,Pij不一定等于Qji。男运动员ii和女运动员jj配对组成混合双打的男女双方竞赛优势为Pij∗Qji。设计一个算法,计算男女运动员最佳配对法,使各组男女双方竞赛优势的总和达到最大。
编程任务
设计一个算法,对于给定的男女运动员竞赛优势,计算男女运动员最佳配对法,使各组男女双方竞赛优势的总和达到最大。
输入输出格式
输入格式:
第一行有1 个正整数n (2≤n≤1000)。接下来的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
说明
0≤n≤1000,0≤Pij,Qij≤1000
第一个测试点:n≤100
这题我们把男运动员和女运动员看成两个集合,于是这题便可以看成是带权二分图匹配。
带权二分图匹配通常使用KM算法。
不了解KM算法的请移步。
code:
#include <cstdio>
const int MAXN=2005;
const int INF=0x3f3f3f3f;
int n,now=0;
int rela[MAXN][MAXN],match[MAXN];
int ex_boy[MAXN],ex_girl[MAXN],slack[MAXN];
int vis_boy[MAXN],vis_girl[MAXN];
int boy[MAXN][MAXN],girl[MAXN][MAXN];void read(int &x)
{int out=1;char c;x=0;while(c<'0' || c>'9'){if(c=='-')out=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-48;c=getchar();}x=x*out;
}void write(long long x)
{if(x>10)write(x/10);putchar(x%10+48);
}void init()
{read(n);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)read(boy[i][j]);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)read(girl[i][j]);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)rela[i][j]=boy[i][j]*girl[j][i];
}int dfs(int x)
{int cp;vis_girl[x]=now;for(int y=1;y<=n;y++){if(vis_boy[y]==now)continue;cp=ex_girl[x]+ex_boy[y]-rela[x][y];if(cp==0){vis_boy[y]=now;if((match[y]==0)||dfs(match[y])){match[y]=x;return true;}}else if(cp<slack[y])slack[y]=cp;}return false;
}long long KM()
{for(int i=1;i<=n;i++){match[i]=ex_girl[i]=ex_boy[i]=0;for(int j=1;j<=n;j++)if(rela[i][j]>ex_girl[i])ex_girl[i]=rela[i][j];} for(int i=1;i<=n;i++){now=0;for(int j=1;j<=n;j++){slack[j]=INF;vis_boy[j]=vis_girl[j]=0;}while(1){now++;if(dfs(i))break;int d=INF;for(int j=1;j<=n;j++)if(vis_boy[j]!=now&&slack[j]<d)d=slack[j];for(int j=1;j<=n;j++){if(vis_girl[j]==now)ex_girl[j]-=d;if(vis_boy[j]==now)ex_boy[j]+=d;else slack[j]-=d;}}}long long res=0;for(int i=1;i<=n;i++)res+=rela[match[i]][i];return res;
}int main()
{init();write(KM());return 0;
}
转载于:https://www.cnblogs.com/lzxzy-blog/p/xinzhaoyang.html
T66597 小xzy的任务 题解相关推荐
- T66099 小xzy的数对 题解
T66099 小xzy的数对 题目背景 老师带同学参加表演,要求学生两两一组表演,但有些学生一起会发生冲突,现在老师想知道有多少组学生分到一起时不会发生冲突. 题目描述 学生发生冲突当且仅当他们身上的 ...
- 【10.28 校内普及组】 小B浇花 题解
[10.28 校内普及组] 小B浇花 题解 题目 解题思路 排个序 如果当前的高度小于等于上一个 答案累加上一高度-当前高度+1 代码 #include<algorithm> #inclu ...
- 小浩算法-java题解(二分篇)
小浩算法-java题解-二分篇 二分篇 第875题:阿珂喜欢吃香蕉 第69题:x的平方根 第278题:第一个错误的版本 第153题:旋转排序数组最小值Ⅰ 第154题:旋转排序数组最小值Ⅱ 第475题: ...
- [SHOI2008]小约翰的游戏 题解
题目 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不取,我们规定取到最后 ...
- P1335 [NOI2013] 小Q的修炼 题解
感觉这种题答都没有题解,而我又想在这里保存一下代码,就写一份题解咯. [题意] 一共有M个变量. 有一系列的操作,按顺序标为1~N.操作分为三种: ①普通操作:将一个变量加上一个量. ②条件跳转:给出 ...
- 【NOIP模拟题】【DP】【LIS】【中缀表达式】2016.11.15 第一题 小L的二叉树 题解
小L的二叉树 小L的二叉树 题目背景 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣. 所以,小L当时卡在了二叉树. [题目描述] 在计算机科学中,二 ...
- 【NOIP模拟题】【DP】【同余最短路】【暴力剪枝】2016.11.15 第二题 小L的牛栏 题解
小L的牛栏 [题目描述] 小L通过泥萌的帮助,成功解决了二叉树的修改问题,并因此写了一篇论文, 成功报送了叉院(羡慕不?).勤奋又勤思的他在研究生时期成功转系,考入了北京大学光华管理学院!毕业后,凭着 ...
- 洛谷3672:小清新签到题——题解
https://www.luogu.org/problemnew/show/P3672 题目见上面. 参考:https://www.cnblogs.com/candy99/p/6582699.html ...
- P1234 小A的口头禅题解
一道很水的题目 题目链接 依题意,输出hehe的总数 情况有以下几种: 1.hehe 2.eheh 3. h e h e 4. e h e h(不要忽略后两种) 然后快乐地模拟就好了 注意循环条件 上 ...
最新文章
- Java项目:晚会抽奖系统(java+Jdbc+Servlet+Ajax+mysql)
- python 仪表盘-跟小白学Python数据分析——绘制仪表盘
- Animation Property Animation 使用
- 大工17秋《计算机文化基础》在线测试1,奥鹏大工15秋《计算机文化基础》在线测试1答案...
- VNC 远程控制工具软件
- 查找指定时间段内的文件
- C++的Memcpy与Memcpy_s函数解析
- 东南大学 软件工程 复试3门科目历年真题 思维导图整理(软件工程/数据库/计算机网络)
- Chrome浏览器浅析
- TAGE Branch Predictor/分支预测
- 清华大学计算机系学几年,清华大学16位学霸简历吓坏网友
- python from win32com import client 出现弹框 隐藏模块中出现编译错误
- 专家:大数据正成为促进经济转型新动能
- controller 之@...
- SQL Server 使用数据库发送邮件(sp_send_dbmail)
- 【视频聊天】背后的秘密
- 51单片机串口通信实操(中断函数)
- 【自然语言处理-1】TF-IDF简单最实用的关键词提取技术
- 用excel图表误差线显示均值和标准差(转)
- vue + router 权限管理 不同角色显示不同路由
热门文章
- ios沙箱模式开启_ios的应用沙箱运行是怎么一回事
- Java编程思想笔记——容器深入研究1
- cx_freeze打包python3.6成exe/msi应用
- linux 交换机硬件监控,zabbix5.0监控华为交换机,添加自定义监控项
- 放弃python选r_无需纠结R还是Python
- 计算机模拟退火算法,模拟退火算法
- Stable与PreSale版本同时在线的一些思考
- Android也谈android和多屏幕适配
- Thinkphp 5.1开源商城系统 开源社区O2O 类似美团 支持社区配送 wstmall小程序
- 智能汽车专题报告之软件篇:迈向SOA软件架构