首页 > 其他分享 >L2-030 冰岛人

L2-030 冰岛人

时间:2024-03-20 10:45:49浏览次数:18  
标签:count sname string int L2 mp fname 冰岛人 030

费解啊。
"所谓“五代以内无公共祖先”是指两人的公共祖先(如果存在的话)必须比任何一方的曾祖父辈分高。"
也就是这个祖先出现在任意一方的五代中,都认为是近亲。
只有他是A的五代之外并且是B的五代之外,才认为不是近亲。

#include <bits/stdc++.h>
using namespace std;
map<string, pair<int, string>> mp;
bool check(string a,string b) {
	map<string, int> ss;//名字,第几代
	int count = 1;
	while (a.size()) {
		ss[a] = count;
		a = mp[a].second;
		count++;
	}
	int count2 = 1;
	while (b.size()) {
		if (ss.count(b)) {//如果在a中找到了b
			if (ss[b] < 5 || count2 < 5) return false;//只要在一方当中属于近亲那么就是近亲
			else return true;//不是近亲
		}
		b = mp[b].second;
		count2++;
	}
	return true;//不是近亲
}
int main() {
	int n;
	cin >> n;
	for (int i = 0; i < n; i++) {
		string sname, fname;
		cin >> sname >> fname;
		int len = fname.size();
		if (fname[len - 1] == 'm') {
			mp[sname].first = 1;//男孩
		}
		else if (fname[len - 1] == 'f') {
			mp[sname].first = -1;//女孩
		}
		else {
			int pos = fname.find("sson");
			if (pos != -1) {
				string s = fname.substr(0, pos);
				mp[sname] = { 1,s };//男孩
			}
			pos = fname.find("sdottir");
			if (pos != -1) {
				string s = fname.substr(0, pos);
				mp[sname] = { -1,s };//女孩
			}
		}
	}
	int t;
	cin >> t;
	for (int i = 0; i < t; i++) {
		string a, b, c, d;
		cin >> a >> b >> c >> d;//a和c是有用的
		if (mp.count(a) && mp.count(c)) {
			int sex1 = mp[a].first;
			int sex2 = mp[c].first;
			if (sex1 == sex2) {
				cout << "Whatever" << '\n';
				continue;
			}
		}
		if (!mp.count(a) || !mp.count(c)) {
			cout << "NA" << '\n';
			continue;
		}
		int isok = check(a, c);
		if (isok) cout << "Yes" << '\n';
		else cout << "No" << '\n';
	}
	return 0;
}

参考博客: https://blog.csdn.net/hys__handsome/article/details/124484080

标签:count,sname,string,int,L2,mp,fname,冰岛人,030
From: https://www.cnblogs.com/chengyiyuki/p/18084725

相关文章

  • L2-029 特立独行的幸福
    看其他大佬的。10,13这些是幸福数,在开始会设置为特立独行的幸福数,但是他们并不是特立独行而是其他数字变换而来的,所以在设置那个数字的时候10,13会被修正为普通的幸福数。#include<bits/stdc++.h>usingnamespacestd;intvisited[10010];//记录那些是幸福数intrecord[1001......
  • L2-028 秀恩爱分得快
    测试点会出现-0这种,直接导致无法使用int类型接收编号,因为无从判断性别,因此只能用string类型。并且需要使用sex来记录当前是男性还是女性,只有对方是异性的时候,亲密度才有意义。#include<bits/stdc++.h>usingnamespacestd;intp[1010][510],k[1010],sex[1010];doublereco......
  • L2-026 小字辈
    第一眼想到的是BFS,然后就用BFS,个人感觉还是有一丢丢麻烦。#define_CRT_SECURE_NO_WARNINGS#include<bits/stdc++.h>usingnamespacestd;#definelllonglongvector<vector<int>>vec;intmain(){ intn; cin>>n; vec.resize(n+10); introot=0; for(in......
  • L2-025 分而治之
    如果一个城市未被炸毁,那如果他可达的其他城市也未被炸毁,说明方案不可行。#define_CRT_SECURE_NO_WARNINGS#include<bits/stdc++.h>usingnamespacestd;#definelllonglongvector<vector<int>>vec;//邻接表intmain(){ intn,m; cin>>n>>m; vec.resize(n+10......
  • L2-024 部落
    注意merge的时候如果p1和p2相等及时返回否则死循环了,代码有问题而不是算法超时。#define_CRT_SECURE_NO_WARNINGS#include<bits/stdc++.h>usingnamespacestd;#definelllonglongintparent[10010],deep[10010];intgetf(intx){ inty=x; while(parent[y]!=-......
  • L2-023 图着色问题
    老太太钻被窝,给爷整笑了。测试点2:颜色只能是k种,大于小于都过不去。#include<bits/stdc++.h>usingnamespacestd;intedges[503][503];intcolor[503];intmain(){ intv,e,k; cin>>v>>e>>k; for(inti=0;i<e;i++){ inta,b; cin>>a......
  • L2-022 重排链表
    这道题真的烦,输出想半天。反正就是要区分奇偶,才能知道那个结点最后要打印出-1.我看网上遇到的都是测试点3的问题,不过我有问题的是测试点1,前三个出问题就是节点数奇偶的问题。#include<bits/stdc++.h>usingnamespacestd;map<int,pair<int,int>>mp;intmain(){ ints......
  • WSL2 配置 tensorflow 环境
    Windows系统中更新NVIDA驱动这里可以直接通过GeforceExperience直接更新更新完成后可以在命令行/wsl中输入nvidia-smi可以看到输出这里的CUDAVersion指的是该驱动版本最高可支持的CUDA版本安装CUDA到NVIDIA官网下载符合条件的CUDA这里我一开始直接选择安装了最新版......
  • [npm] npm打包/运行时,报:"95% emitting CompressionPlugin ERROR Error: error:030801
    1问题描述环境信息windows10node:v20.11.1>node--versionv20.11.1vue:2.6.12[dependencies]"vue":"2.6.12""vue-count-to":"1.0.13""vue-cropper":"0.5.5""vue-meta":&q......
  • PTA L2-014 列车调度
    火车站的列车调度铁轨的结构如下图所示。两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺......