URAL 1721 Two Sides of the Same Coin(二分图匹配,输出匹配对象)
题意:给出n个人的信息,名字、特征、排名。
在排名相差2的前提下,特征为testdata可以与特征为statements的组队,特征为anything可以任何一人组队;
求最多匹配对数,并将每队名字输出;
思路:将排名%4,结果小于2的一组,大于等于2的一组,则同一组中不会匹配,以此构建二分图;二分图匹配;
匈牙利算法的思想是:
左点集与右点集匹配:
1)有匹配的先匹配;
2)后来匹配的如果与前面的匹配冲突,前面的匹配重新匹配,如果匹配成功了,则加上新匹配;否则新匹配不成立;
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; int link[5050],vis[5050]; int n,m,h; int match[5055][5050],rk[5050]; char name[5050][505],str[505][5050]; int left[5050],right[5050],sta[5050]; int dfs(int x) {int i;for(i=1;i<=m;i++){if(!vis[i]&&match[x][i]){vis[i]=1;if(link[i]==-1||dfs(link[i])){link[i]=x;return 1;}}}return 0; } int hungary() {int sum=0,j;memset(link,-1,sizeof(link));for(j=1;j<=h;j++){memset(vis,0,sizeof(vis));if(dfs(j)) sum++;}return sum; } int main() {int i,j,k,res;while(scanf("%d",&n)!=EOF){for(i=1;i<=n;i++){scanf("%s%s%d",name[i],str[i],&rk[i]);if(strcmp(str[i],"anything")==0)sta[i]=3;else if(strcmp(str[i],"statements")==0)sta[i]=1;else sta[i]=2;}h=m=0;for(i=1;i<=n;i++){if(rk[i]%4<2)left[++h]=i;elseright[++m]=i;}memset(match,0,sizeof(match));for(i=1;i<=h;i++){for(j=1;j<=m;j++){if((sta[left[i]]==3||sta[right[j]]==3)||abs(rk[left[i]-rk[right[j]]])==2)match[i][j]=1;}}res=hungary();printf("%d\n",res);for(i=1;i<=m;i++){if(~link[i]){int num1=left[link[i]];int num2=right[i];if(sta[num1]==2)swap(num1,num2);if(sta[num2]==1)swap(num1,num2);printf("%s %s\n",name[num1],name[num2]);}}}return 0; }
转载于:https://www.cnblogs.com/dashuzhilin/p/4652438.html
URAL 1721 Two Sides of the Same Coin(二分图匹配,输出匹配对象)相关推荐
- URAL - 1721 Two Sides of the Same Coin
题意:给出n个人的信息,名字.特征.排名.在排名相差2的前提下,特征为testdata可以与特征为statements的组队,特征为anything可以任何一人组队: 求最多匹配对数,并将每队名字输出 ...
- POJ 超详细分类
POJ 各题算法 1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 ...
- 《题目与解读》红书 训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》
虽然2012年出版的老书了,但是是由三次世界冠军的上海交大ACM队出版的书籍,选择的题目是ACM经典中的经典,书中有非常详细的题解,可以学到很多东西,值得一刷. 目录 第一部分 第一章 数学 1.1 ...
- 深度揭秘强化学习技术与落地!智源大会「强化学习与决策智能」专题论坛
决策智能是国家新一代人工智能的重要发展方向,强化学习是实现决策智能的核心技术之一.在强化学习中,智能体与环境进行不断的交互,基于环境的反馈学习如何选择一系列动作,以使长期累积的奖励和最大.近年来,该方 ...
- 神经科学如何影响人工智能?看DeepMind在NeurIPS2020最新《神经科学人工智能》报告,126页ppt...
来源:专知 Jane Wang是DeepMind神经科学团队的一名研究科学家,研究元强化学习和受神经科学启发的人工智能代理.她的背景是物理.复杂系统.计算和认知神经科学. Kevin Miller是D ...
- hp-ux ftp启动_您可以做12项免费的事情来快速启动UX设计事业
hp-ux ftp启动 by Miriam Isaac 通过Miriam Isaac Okay, first things first. Who is this guide for? 好吧,第一件事. ...
- c++两个文档匹配数据_《搜索和推荐中的深度匹配》——1.2 搜索和推荐中匹配统一性...
Garcia-Molina等[1]指出,搜索和推荐中的根本问题是识别满足用户信息需求的信息对象.还表明搜索(信息检索)和推荐(信息过滤)是同一枚硬币的两个方面,具有很强的联系和相似性[2].图1.1 ...
- vs2017旗舰版_2017年的所有旗舰手机都有明显的妥协。 这是他们告诉我们有关设计的信息。...
vs2017旗舰版 by Teo Yu Siang 张玉祥 2017年的所有旗舰手机都有明显的妥协. 这是他们告诉我们有关设计的信息. (All of 2017's flagship phones h ...
- 带你科学了解NAD是什么?NAD+是什么东西?
带你科学了解NAD是什么?NAD+是什么东西? 带你科学了解NAD是什么?NAD+是什么东西?伴随着世界人口老龄化, 与衰 老相关的阿尔茨海默症.心脏疾病.关节问题.睡眠以及心血管问题等已成 为威胁人 ...
最新文章
- 零 目录-机器学习老师板书-斯坦福吴恩达教授
- xfce4的面板只能看见日期没法看见具体时刻
- 2016年个人技术总结(前端)
- sql活动监视器 死锁_监视SQL Server死锁–简单方法
- html找不到定义,Main无法正常使用,找不到它的定义
- 精简linux (二)背景图片的设置 网络功能的实现
- SQL Server 2012安装错误案例:Error while enabling Windows feature: NetFx3, Error Code: -2146498298...
- Java知多少(64)线程死锁
- IBM称欧亚受Conficker病毒感染最严重
- win10升级win11教程(包含TPM2.0的设置以及OfflineInsiderEnroll工具)
- 你要如何衡量你的人生?
- 机器学习之从基础数学深入剖析逻辑回归(案例理论相结合)
- 怎样清理苹果手机内存空间_你还不知道?苹果手机这样清理垃圾,轻松腾出10G内存!...
- 终于有人把 单点 登录说清楚了!
- Kafka mirroring (MirrorMaker) 和 uReplicator 快速开始
- 统计学习方法的概括和补充
- win10笔记本电脑如何设置为合上盖子即锁屏?
- 免费学python编程_强力推荐,非常全的 Python编程学习资料(今日免费)
- 电气自动化专业和计算机专业哪一个好学,2021自动化和电气工程哪个好 选什么专业好...
- [转贴]给想立志入行网络或已经初入行的朋友的建议(三)