冰岛人[天梯赛]

文章目录

  • 题目描述
  • 思路
  • AC代码

题目描述

在这里插入图片描述
在这里插入图片描述

输入样例
15
chris smithm
adam smithm
bob adamsson
jack chrissson
bill chrissson
mike jacksson
steve billsson
tim mikesson
april mikesdottir
eric stevesson
tracy timsdottir
james ericsson
patrick jacksson
robin patricksson
will robinsson
6
tracy tim james eric
will robin tracy tim
april mike steve bill
bob adam eric steve
tracy tim tracy tim
x man april mikes输出样例
Yes
No
No
Whatever
Whatever
NA

思路

模拟

存储结构
1.结构体存储每个人的信息,包括父亲的姓名(只针对维京人后裔)以及每个人的性别
2.用map存储每个人姓名到其结构体信息的映射

具体流程
1.判断两人是否都存在 – 一定要首先判断
2.判断两人性别是否相同
3.判断两人是否五代内有公共祖先
①依次遍历每个人的祖先,判断五代内是否有公共祖先,如果超出五代,或者祖先不足5代(不管相同还是不用),则可以交往;否则不可以交往

AC代码

#include <bits/stdc++.h>
using namespace std;
typedef struct
{char sex;string family_name;
}person;
map<string, person> mp;
bool judge(string a, string b)
{int cnta = 1; //统计A祖先的代数for(string A = a; A.size(); A = mp[A].family_name){int cntb = 1; //统计B祖先的代数for(string B = b; B.size(); B = mp[B].family_name){if(cnta >= 5 && cntb >= 5) return true; //五代之内没有祖先if(A == B && (cnta < 5 || cntb < 5)) return false; //五代之内有相同祖先cntb ++;        }cnta ++;}return true; //不够五代
}
int main()
{int n;cin >> n;for(int i = 0; i < n; i ++){string s1, s2;cin >> s1 >> s2;if(s2.find("sson") != -1) //维京人后裔 男性{int pos = s2.find("sson");mp[s1] = {'m', s2.substr(0, pos)};}else if(s2.find("sdottir") != -1) //维京人后裔 女性{int pos = s2.find("sdottir");mp[s1] = {'f', s2.substr(0, pos)};}else{int len = s2.size();if(s2[len - 1] == 'm') mp[s1].sex = 'm';else if(s2[len - 1] == 'f') mp[s1].sex = 'f';}}int m;cin >> m;while(m --){string name1, family_name1, name2, family_name2;cin >> name1 >> family_name1 >> name2 >> family_name2;if(mp.find(name1) == mp.end() || mp.find(name2) == mp.end()) cout << "NA" << endl;else if(mp[name1].sex == mp[name2].sex) cout << "Whatever" << endl;else{if(judge(name1, name2)) cout << "Yes" << endl;else cout << "No" << endl;}}return 0;
}

欢迎大家批评指正!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/760201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA启动提示Downloading pre-built shared indexes

提示内容&#xff1a; Download pre-built shared indexes Reduce the indexing time and CPU load with pre-built JDK shared indexes Always download Download once Dontt show again Configure... "Download pre-built shared index" 是IDEA中的一个功能选…

ORA-600 2662快速恢复之Patch scn工具---惜分飞

有客户数据库启动报ORA-600 2662错误 SQL> recover database; 完成介质恢复。 SQL> alter database open ; alter database open * 第 1 行出现错误: ORA-00603: ORACLE server session terminated by fatal error ORA-00600: internal error code, arguments: [2662], […

AI如何支持慈善组织

为各种有意义的事业提供支持&#xff0c;无论是努力寻找治愈疾病的方法、研发使生活更轻松的技术&#xff0c;还是为有需要的人提供服务&#xff0c;都是无比崇高的使命。提供捐款或是投入时间支持的捐助者和志愿者往往对他们选择支持的事业的目标、服务和资源分配存有诸多疑虑…

Linux系统如何使用tcpdump实时监控网络速度:方法与技巧解析

在网络管理和故障排查中&#xff0c;了解网络速度是一个重要的环节。而tcpdump&#xff0c;作为一个强大的网络数据包分析工具&#xff0c;不仅可以用于分析数据包的内容&#xff0c;还能用于实时监控网络速度。本文将介绍Linux系统如何使用tcpdump来实时监控网络速度。 首先&…

工大智信智能听诊智慧医疗的创新

智能听诊器&#xff0c;智慧医疗的新突破 工大智信智能听诊器是一款结合了先进技术和医疗专业知识的创新产品。它以其独特的优势&#xff0c;为医疗行业带来了前所未有的突破和变革。 传统听诊器依赖于医生的主观判断和经验&#xff0c;而工大智信智能听诊器采用了先进的传感技…

CV论文--2024.3.21

1、Chain-of-Spot: Interactive Reasoning Improves Large Vision-Language Models 中文标题&#xff1a;Chain-of-Spot&#xff1a;交互式推理改进大型视觉语言模型 简介&#xff1a;在视觉语言理解领域&#xff0c;模型在解释和推理视觉内容方面的熟练程度已经成为许多应用的…

vue学习笔记27-组件生命周期⭐

每个vue组件实例在创建时都需要经历一系列初始化步骤&#xff0c;比如设置好数据侦听&#xff0c;编译模板&#xff0c;挂载实列到DOM&#xff0c;以及在数据改变时更新DOM。在此过程中&#xff0c;它也会运行称为生命周期钩子的函数&#xff0c;让开发者有机会在特定阶段运行自…

⾃定义类型:结构体

大家好我们今天学习的是结构体&#xff0c;话不多说。上车吧&#xff01;&#xff01;&#xff01; 文章目录 1. 结构体类型的声明2. 结构体变量的定义创建和初始化3. 结构成员访问操作符4. 结构体内存对⻬5. 结构体传参6. 结构体实现位段 前言 C语言中类型有很多&#xff0c;…

【Linux】Bash支持各种指令选项的原理:命令行参数

前言 大家好吖&#xff0c;欢迎来到 YY 滴Linux系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过Linux的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《…

Python字典的常用操作

Python字典是一种非常灵活的数据结构&#xff0c;允许我们以键值对的形式存储和管理数据。在本文中&#xff0c;我们将探讨字典的四个常用方法&#xff1a;keys()、values()、items() 和 setdefault()。 keys()方法 keys() 方法返回一个包含字典所有键的视图。这意味着你可以…

星际篮球争霸赛 java题解

要求更多人分数相同即得到mvp&#xff0c;要求组数presentGrop尽可能多&#xff0c;从大到小枚举分组数presentGrop。 对输入的分数数组进行分配&#xff0c;分配为presentGrop个组&#xff0c;用tmp[i]记录value[i]被分配到哪一组了。 判断能否成功分组&#xff1a; 如果当前组…

Linux常用命令之文件权限类

1.1 Linux的文件属性 在Linux里使用ll或者ls-l命令来显示一个文件的属性以及文件所属的用户和组。 以-开头&#xff1a;普通文件 以d开头&#xff1a;目录 以l开头&#xff1a;链接 以c开头&#xff1a;字符类型的设备文件(例如&#xff1a;鼠标、键盘&#xff0c;他们输入…

排序算法:归并排序(递归)

文章目录 一、归并排序的思路二、代码编写 先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01;^ _ ^<3 ❤️ ❤️ ❤️ 码字不易&#xff0c;大家的支持就是我坚持下去的动力。点赞后不要忘了关注我哦&#xff01; 所属专栏:排序算法 一、归并排序的思路 单…

nRF Sniffer 在Wireshark中的使用

一、简介 使用nRF Sniffer在wireshark中抓包是经常使用的。但是每次抓包会获取到空气中所有的数据包&#xff0c;数据量非常大。而对于开发人员而言&#xff0c;只需要其中特定的信息。此时就需要掌握数据的过滤语句。 二、过滤 1.根据MAC地址进行过滤 btle.advertising_add…

家政系统平台开发的优势

管理统一化&#xff1a;家政系统能够实现线上线下的统一整体管理运营&#xff0c;包括宣传、销售、订单、分配、执行、售后等各个环节&#xff0c;使得管理更加智能化、便捷化。这种统一化管理有助于提升公司的运营效率&#xff0c;降低成本&#xff0c;并提高客户满意度。客户…

Debezium日常分享系列之:Debezium2.5稳定版本之Mysql连接器的数据变更事件

Debezium日常分享系列之&#xff1a;Debezium2.5稳定版本之Mysql连接器的数据变更事件 一、数据变更事件二、更改事件键三、更改事件值四、创建事件五、更新事件六、主键更新七、删除事件八、墓碑事件九、截断事件十、Debezium技术总结 一、数据变更事件 Debezium MySQL 连接器…

2023年蓝桥杯省赛——平方差

目录 题目链接&#xff1a;1.平方差 - 蓝桥云课 (lanqiao.cn) 思路 暴力偷分 发现规律 发现蹊跷 总结 题目链接&#xff1a;1.平方差 - 蓝桥云课 (lanqiao.cn) 思路 咱就是说&#xff0c;写蓝桥杯的题目的第一件事情是什么&#xff0c;那就是不管三七二十一先暴力一下把能…

【爬虫】web自动化和接口自动化

专栏文章索引&#xff1a;爬虫 目录 一、介绍 二、推荐 1.接口自动化 2.Web自动化 一、介绍 爬虫技术一般可以分为两种类型&#xff1a;接口自动化和web自动化。下面是它们的简要介绍&#xff1a; 1.接口自动化 接口自动化技术的主要目的是通过模拟HTTP请求来实现自动化…

Docker在Mac上轻松部署RabbitMQ:从拉取镜像到创建运行带管理界面的容器全攻略

1、去官网下载docker 安装&#xff1a;把图标拉到应用程序即可 https://docs.docker.com/desktop/install/mac-install/ 2、拉取rabbitmq镜像 docker pull rabbitmq:3.8-management 3、创建并启动容器&#xff0c;同时设置环境变量以创建用户和密码 docker run -d --name m…

axure和蓝湖上查看页面的说明和上传文件

蓝湖上传文件 入口 可添加链接和文件 文件可添加 PDF&#xff0c;word&#xff0c;Excel等&#xff0c;不能添加压缩包&#xff0c;可在线预览文件内容 axure元件说明 在原型上添加说明 axure发布页 axure预览页或发布到axure的服务器上&#xff0c;查看页面说明的方法 点…