题意:给出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(二分图匹配,输出匹配对象)相关推荐

  1. URAL - 1721 Two Sides of the Same Coin

    题意:给出n个人的信息,名字.特征.排名.在排名相差2的前提下,特征为testdata可以与特征为statements的组队,特征为anything可以任何一人组队: 求最多匹配对数,并将每队名字输出 ...

  2. POJ 超详细分类

    POJ 各题算法 1000    A+B Problem            送分题     49%    2005-5-7 1001    Exponentiation         高精度   ...

  3. 《题目与解读》红书 训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》

    虽然2012年出版的老书了,但是是由三次世界冠军的上海交大ACM队出版的书籍,选择的题目是ACM经典中的经典,书中有非常详细的题解,可以学到很多东西,值得一刷. 目录 第一部分 第一章 数学 1.1 ...

  4. 深度揭秘强化学习技术与落地!智源大会「强化学习与决策智能」专题论坛

    决策智能是国家新一代人工智能的重要发展方向,强化学习是实现决策智能的核心技术之一.在强化学习中,智能体与环境进行不断的交互,基于环境的反馈学习如何选择一系列动作,以使长期累积的奖励和最大.近年来,该方 ...

  5. 神经科学如何影响人工智能?看DeepMind在NeurIPS2020最新《神经科学人工智能》报告,126页ppt...

    来源:专知 Jane Wang是DeepMind神经科学团队的一名研究科学家,研究元强化学习和受神经科学启发的人工智能代理.她的背景是物理.复杂系统.计算和认知神经科学. Kevin Miller是D ...

  6. hp-ux ftp启动_您可以做12项免费的事情来快速启动UX设计事业

    hp-ux ftp启动 by Miriam Isaac 通过Miriam Isaac Okay, first things first. Who is this guide for? 好吧,第一件事. ...

  7. c++两个文档匹配数据_《搜索和推荐中的深度匹配》——1.2 搜索和推荐中匹配统一性...

    Garcia-Molina等[1]指出,搜索和推荐中的根本问题是识别满足用户信息需求的信息对象.还表明搜索(信息检索)和推荐(信息过滤)是同一枚硬币的两个方面,具有很强的联系和相似性[2].图1.1 ...

  8. vs2017旗舰版_2017年的所有旗舰手机都有明显的妥协。 这是他们告诉我们有关设计的信息。...

    vs2017旗舰版 by Teo Yu Siang 张玉祥 2017年的所有旗舰手机都有明显的妥协. 这是他们告诉我们有关设计的信息. (All of 2017's flagship phones h ...

  9. 带你科学了解NAD是什么?NAD+是什么东西?

    带你科学了解NAD是什么?NAD+是什么东西? 带你科学了解NAD是什么?NAD+是什么东西?伴随着世界人口老龄化, 与衰 老相关的阿尔茨海默症.心脏疾病.关节问题.睡眠以及心血管问题等已成 为威胁人 ...

最新文章

  1. 零 目录-机器学习老师板书-斯坦福吴恩达教授
  2. xfce4的面板只能看见日期没法看见具体时刻
  3. 2016年个人技术总结(前端)
  4. sql活动监视器 死锁_监视SQL Server死锁–简单方法
  5. html找不到定义,Main无法正常使用,找不到它的定义
  6. 精简linux (二)背景图片的设置 网络功能的实现
  7. SQL Server 2012安装错误案例:Error while enabling Windows feature: NetFx3, Error Code: -2146498298...
  8. Java知多少(64)线程死锁
  9. IBM称欧亚受Conficker病毒感染最严重
  10. win10升级win11教程(包含TPM2.0的设置以及OfflineInsiderEnroll工具)
  11. 你要如何衡量你的人生?
  12. 机器学习之从基础数学深入剖析逻辑回归(案例理论相结合)
  13. 怎样清理苹果手机内存空间_你还不知道?苹果手机这样清理垃圾,轻松腾出10G内存!...
  14. 终于有人把 单点 登录说清楚了!
  15. Kafka mirroring (MirrorMaker) 和 uReplicator 快速开始
  16. 统计学习方法的概括和补充
  17. win10笔记本电脑如何设置为合上盖子即锁屏?
  18. 免费学python编程_强力推荐,非常全的 Python编程学习资料(今日免费)
  19. 电气自动化专业和计算机专业哪一个好学,2021自动化和电气工程哪个好 选什么专业好...
  20. [转贴]给想立志入行网络或已经初入行的朋友的建议(三)

热门文章

  1. c++中利用sizeof运算符计算结构体大小问题探讨
  2. Cocoapods安装过程【转载】
  3. 《Adobe Photoshop CC经典教程(彩色版)》—第4课4.7节添加调整图层
  4. PHP版本的自动生成有规则的订单号(或编号)
  5. Shiro 那点事儿
  6. oracle 11g rac asm磁盘组增加硬盘
  7. kubernetes集群命令行工具kubectl
  8. 内网之windows域相关概念介绍
  9. html/jquery 常用的输入与获取参数
  10. C++ 继承Employee类