搜索
您的当前位置:首页正文

PAT 1065 单身狗 python(无超时)

来源:好走旅游网

1065 单身狗 (25 分)

“单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。

输入格式:

输入第一行给出一个正整数 N(≤ 50 000),是已知夫妻/伴侣的对数;随后 N 行,每行给出一对夫妻/伴侣——为方便起见,每人对应一个 ID 号,为 5 位数字(从 00000 到 99999),ID 间以空格分隔;之后给出一个正整数 M(≤ 10 000),为参加派对的总人数;随后一行给出这 M 位客人的 ID,以空格分隔。题目保证无人重婚或脚踩两条船。

输出格式:

首先第一行输出落单客人的总人数;随后第二行按 ID 递增顺序列出落单的客人。ID 间用 1 个空格分隔,行的首尾不得有多余空格。

输入样例:

输出样例:

5
10000 23333 44444 55555 88888

作者: CHEN, Yue
单位: 浙江大学
时间限制: 200 ms
内存限制: 64 MB
代码长度限制: 16 KB

问题分析:
本题逻辑难度较低,主要问题在于优化运算速度 3、4节点易超时
通过查阅各种大佬的做法,发现在对数据进行查找时,set的速度优于list
基于此结论,也将对之前的题目进行优化

代码:

n = int(input())
cp = list()
for i in range(n):
    cp.append(input().split())
input()
dog = input().split()
dog = set(dog)
for c in cp:
    if c[0] in dog and c[1] in dog:
        dog.remove(c[0])
        dog.remove(c[1])
dog = list(dog)
dog.sort()
print(len(dog))
if len(dog) != 0:
    print(' '.join(dog))

因篇幅问题不能全部显示,请点此查看更多更全内容

Top