L2-030 冰岛人 (25 分) (阅读理解)
补题链接:Here
2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名。好事者发现冰岛人的名字后面似乎都有个“松”(son),于是有网友科普如下:
冰岛人沿用的是维京人古老的父系姓制,孩子的姓等于父亲的名加后缀,如果是儿子就加 sson,女儿则加 sdottir。因为冰岛人口较少,为避免近亲繁衍,本地人交往前先用个 App 查一下两人祖宗若干代有无联系。本题就请你实现这个 App 的功能。
输入格式:
输入首先在第一行给出一个正整数 N( \(1<N≤10^5\)),为当地人口数。随后 N 行,每行给出一个人名,格式为:名 姓(带性别后缀),两个字符串均由不超过 20 个小写的英文字母组成。维京人后裔是可以通过姓的后缀判断其性别的,其他人则是在姓的后面加 m 表示男性、f 表示女性。题目保证给出的每个维京家族的起源人都是男性。
随后一行给出正整数 M,为查询数量。随后 M 行,每行给出一对人名,格式为:名1 姓1 名2 姓2。注意:这里的姓是不带后缀的。四个字符串均由不超过 20 个小写的英文字母组成。
题目保证不存在两个人是同名的。
输出格式:
对每一个查询,根据结果在一行内显示以下信息:
- 若两人为异性,且五代以内无公共祖先,则输出
Yes; - 若两人为异性,但五代以内(不包括第五代)有公共祖先,则输出
No; - 若两人为同性,则输出
Whatever; - 若有一人不在名单内,则输出
NA。
所谓“五代以内无公共祖先”是指两人的公共祖先(如果存在的话)必须比任何一方的曾祖父辈分高。
输入样例:
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
首先判断是否存在两人,如果不在输出
NA其次判断两人性别,一样的输出
Whatever然后利用
check()函数判断一下是否 \(5\) 代之内即可(就是判断父亲)
// Murabito-B 21/04/23
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
struct Peoson {
char sex;
string fa;
};
map<string, Peoson> people;
bool check(string a, string b) {
int i = 1, j;
for (string A = a; A.size(); A = people[A].fa, ++i) {
j = 1;
for (string B = b; B.size(); ++j, B = people[B].fa) {
if (i >= 5 && j >= 5) return true;
if (A == B) return false;
}
}
return true;
}
void solve() {
int n, m;
string str, a, b;
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> a >> b;
if (b[b.size() - 1] == 'n')
people[a] = {'m', b.substr(0, b.size() - 4)};
else if (b[b.size() - 1] == 'r')
people[a] = {'f', b.substr(0, b.size() - 7)};
else
people[a].sex = b[b.size() - 1];
}
cin >> m;
while (m--) {
cin >> a >> str >> b >> str;
if (people.find(a) == people.end() || people.find(b) == people.end()) cout << "NA\n";
else if (people[a].sex == people[b].sex)
cout << "Whatever\n";
else
cout << (check(a, b) ? "Yes\n" : "No\n");
}
}
int main() {
ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
solve();
return 0;
}
L2-030 冰岛人 (25 分) (阅读理解)的更多相关文章
- A1012 The Best Rank (25)(25 分)
A1012 The Best Rank (25)(25 分) To evaluate the performance of our first year CS majored students, we ...
- PAT 甲级 1075 PAT Judge (25分)(较简单,注意细节)
1075 PAT Judge (25分) The ranklist of PAT is generated from the status list, which shows the scores ...
- PAT (Basic Level) Practice (中文)1065 单身狗 (25 分) 凌宸1642
PAT (Basic Level) Practice (中文)1065 单身狗 (25 分) 凌宸1642 题目描述: "单身狗"是中文对于单身人士的一种爱称.本题请你从上万人的大 ...
- L2-006 树的遍历 (25 分) (根据后序遍历与中序遍历建二叉树)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805069361299456 L2-006 树的遍历 (25 分 ...
- L2-007 家庭房产 (25 分)
L2-007 家庭房产 (25 分) 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(≤),随后N行,每行按下 ...
- 用Keras搞一个阅读理解机器人
catalogue . 训练集 . 数据预处理 . 神经网络模型设计(对话集 <-> 问题集) . 神经网络模型设计(问题集 <-> 回答集) . RNN神经网络 . 训练 . ...
- PAT 乙级 1065 单身狗 (25 分)
1065 单身狗 (25 分) “单身狗”是中文对于单身人士的一种爱称.本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱. 输入格式: 输入第一行给出一个正整数 N(≤ 50 000),是 ...
- 1121 Damn Single (25 分)
1121 Damn Single (25 分) "Damn Single (单身狗)" is the Chinese nickname for someone who is bei ...
- 1114 Family Property (25 分)
1114 Family Property (25 分) This time, you are supposed to help us collect the data for family-owned ...
- 【PAT】1015 德才论 (25)(25 分)
1015 德才论 (25)(25 分) 宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得 ...
随机推荐
- mysql--基础管理
1.docker环境登录mysql PS C:\WINDOWS\system32> docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS P ...
- 洛谷4055 [JSOI2009]游戏(二分图博弈)
例题:在N×M的迷宫中有一个棋子,小 AA 首先任意选择棋子放置的位置.然后,小 YY 和小 AA 轮流将棋子移动到相邻的格子里.游戏的规则规定,在一次游戏中,同一个格子不能进入两次,且不能将棋子移动 ...
- 使用Slurm集群进行分布式图计算:对Github网络影响力的系统分析
本文分享自华为云社区<基于Slurm集群的分布式图计算应用实践:Github协作网络影响力分析>,作者:yd_263841138 . 1. 引言 Slurm(Simple Linux Ut ...
- vue-project-------(模板语法,属性绑定)
<template> <h3>模板语法</h3> <p>{{msg}}</p> <p>{{number+1}}</p> ...
- 基于Docker Desktop搭建Kafka集群并使用Java编程开发
一.引言 前段时间因课业要求使用Docker Desktop 部署Kafka集群并编写生产者消费者程序,折磨了我好几天,在查找大量资料后终于是把整个集群搭建完成了.现在我想要分享其中搭建的历程,希望能 ...
- 【C#】【System.IO】关于拷贝文件夹以及(Directory和DirectoryInfo、File和FileInfo)的区别
本次问题是想要拷贝文件夹,但是找了一圈发现只有File有Copy或者FileInfo的CopyTo,并没有Directory的拷贝操作方法. 针对C#中拷贝文件夹的方法就是先生成一个目标文件夹(des ...
- 若依集成knife4j实现swagger文档增强
若依集成knife4j实现swagger文档增强 本期全是干货,这里我就当你用的非常熟练了,在ruoyi-admin模块中pom文件里加入以下依赖 注:引用knife4j-spring-boot-st ...
- ClickHouse(21)ClickHouse集成Kafka表引擎详细解析
目录 Kafka表集成引擎 配置 Kerberos 支持 虚拟列 资料分享 参考文章 Kafka表集成引擎 此引擎与Apache Kafka结合使用. Kafka 特性: 发布或者订阅数据流. 容错存 ...
- 神经网络入门篇:详解为什么需要非线性激活函数?(why need a nonlinear activation function?)
为什么需要非线性激活函数? 为什么神经网络需要非线性激活函数?事实证明:要让的神经网络能够计算出有趣的函数,必须使用非线性激活函数,证明如下: 这是神经网络正向传播的方程,现在去掉函数\(g\),然后 ...
- 当GaussDB遇上了毕昇编译器
摘要:当应用软件及硬件确定后,编译器对应用的自动优化将成为应用性能的关键. 从应用优化说起 一个应用的优化通常有架构级优化.模块级优化和函数级优化,高性能作为云数据库GaussDB主打特性之一,其在这 ...