网站建设与规划总结怎么写,自己注册了个域名想做一个网站吗,北京网页设计工资,建筑网站开发设计题目描述
单身狗
“单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人#xff0c;以便给予特殊关爱。
输入格式#xff1a;
输入第一行给出一个正整数 N#xff08;≤50000#xff09;#xff0c;是已知夫妻/伴侣的对数#xff1b;…题目描述
单身狗
“单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人以便给予特殊关爱。
输入格式
输入第一行给出一个正整数 N≤50000是已知夫妻/伴侣的对数随后 N 行每行给出一对夫妻/伴侣——为方便起见每人对应一个 ID 号为 5 位数字从 00000 到 99999ID 间以空格分隔之后给出一个正整数 M≤10000为参加派对的总人数随后一行给出这 M 位客人的 ID以空格分隔。题目保证无人重婚或脚踩两条船。
输出格式
首先第一行输出落单客人的总人数随后第二行按 ID 递增顺序列出落单的客人。ID 间用 1 个空格分隔行的首尾不得有多余空格。
输入样例 3 11111 22222 33333 44444 55555 66666 7 55555 44444 10000 88888 22222 11111 23333 输出样例 5 10000 23333 44444 55555 88888 解题思路
本题是一道经典的哈希表问题。我们可以利用字典来存储每对夫妻/伴侣的关系然后遍历参加派对的客人检查他们是否有伴侣参加了派对。如果没有则说明这个人是落单客人将他的ID加入到结果列表中。最后按照ID递增的顺序输出结果。
具体实现步骤如下
读取输入获取已知夫妻/伴侣的对数 n已知夫妻/伴侣的ID号参加派对的总人数 m 以及参加派对的客人的ID号。初始化一个字典 partners 以保存夫妻/伴侣的关系。遍历每对夫妻/伴侣将其ID号与对方的ID号存储在 partners 中。初始化一个集合 guests 以保存参加派对的客人的ID号。遍历每位客人检查其是否有伴侣参加派对。如果没有则将其ID号添加到结果列表 lonely_guests 中。如果有任何落单客人则按升序排序并输出他们的数量和ID号。 Python代码实现
# 获取配对数目
n int(input())# 初始化字典以存储配对关系
partners {}# 将配对关系输入字典
for i in range(n):temp1, temp2 map(int, input().split())partners[temp1] temp2partners[temp2] temp1# 获取客人数目
m int(input())# 输入客人集合
guests set(map(int, input().split()))# 初始化列表以存储落单客人
lonely_guests []# 检查是否为落单客人
for guest in guests:partner partners.get(guest, None)if partner is None or partner not in guests:lonely_guests.append(guest)# 将落单客人按升序排序
lonely_guests.sort()# 输出落单客人的数量
print(len(lonely_guests))# 如果有落单客人则输出其编号
if len(lonely_guests) 0:print( .join({:05d}.format(g) for g in lonely_guests))以上代码实现了题目要求的功能。我们首先通过输入函数获取已知夫妻/伴侣的对数 n已知夫妻/伴侣的ID号参加派对的总人数 m 以及参加派对的客人的ID号。
然后我们初始化一个字典 partners 以保存夫妻/伴侣的关系。在输入夫妻/伴侣的ID号时我们将每对ID号存储在 partners 中。
接下来我们初始化一个集合 guests 以保存参加派对的客人的ID号。在输入参加派对的客人的ID号时我们将每个ID号添加到 guests 中。
然后我们遍历每位客人检查其是否有伴侣参加派对。如果没有则将其ID号添加到结果列表 lonely_guests 中。
最后如果有任何落单客人则按升序排序并输出他们的数量和ID号。