赞
踩
C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽:
给定比赛的最终排名以及一系列参赛者的 ID,你要给出这些参赛者应该获得的奖品。
输入格式:
输入第一行给出一个正整数 N(≤104),是参赛者人数。随后 N 行给出最终排名,每行按排名顺序给出一位参赛者的 ID(4 位数字组成)。接下来给出一个正整数 K 以及 K 个需要查询的 ID。
输出格式:
对每个要查询的 ID,在一行中输出 ID: 奖品,其中奖品或者是 Mystery Award(神秘大奖)、或者是 Minion(小黄人)、或者是 Chocolate(巧克力)。如果所查 ID 根本不在排名里,打印 Are you kidding?(耍我呢?)。如果该 ID 已经查过了(即奖品已经领过了),打印 ID: Checked(不能多吃多占)。
输入样例:
6
1111
6666
8888
1234
5555
0001
6
8888
0001
1111
2222
8888
2222
输出样例:
8888: Minion
0001: Chocolate
1111: Mystery Award
2222: Are you kidding?
8888: Checked
2222: Are you kidding?
作者: CHEN, Yue
单位: 浙江大学
时间限制: 200 ms
内存限制: 64 MB
代码长度限制: 16 KB
问题分析:
更新:
超时问题解决了!
新代码在最下方!
事实证明 set、dict 的查询速度,真的是比 list 要快的
·
·
--------------------------------------我-是-分-割-线----------------------------------------
emmmmm
2、3测试点超时,真的是没想明白为什么
之前怀疑是因为素数计算时间过长
所以直接将10000以内的素数列出进行计算,依旧超时
代码:
n = int(input()) winners_list = [] for i in range(n): winners_list.append(input()) prime = [] if n < 10: n = 10 flag = [1] * (n + 2) p = 2 while p <= n: prime.append(p) for i in range(2 * p, n + 1, p): flag[i] = 0 while 1: p += 1 if flag[p] == 1: break m = int(input()) id_list = [] for i in range(m): my_id = input() if my_id in winners_list: if my_id in id_list: print('{}: Checked'.format(my_id)) else: id_list.append(my_id) winner_index = winners_list.index(my_id) + 1 if winner_index == 1: print('{}: Mystery Award'.format(my_id)) elif winner_index == 2 or winner_index in prime: print('{}: Minion'.format(my_id)) else: print('{}: Chocolate'.format(my_id)) else: print('{}: Are you kidding?'.format(my_id))
新代码:
n = int(input()) winners_dict = dict() for i in range(n): winners_dict[input()] = i + 1 prime = set() if n < 10: n = 10 flag = [1] * (n + 2) p = 2 while p <= n: prime.add(p) for i in range(2 * p, n + 1, p): flag[i] = 0 while 1: p += 1 if flag[p] == 1: break m = int(input()) for i in range(m): my_id = input() if my_id in winners_dict.keys(): x = winners_dict[my_id] winners_dict[my_id] = -1 if x == -1: print('{}: Checked'.format(my_id)) elif x == 1: print('{}: Mystery Award'.format(my_id)) elif x in prime: print('{}: Minion'.format(my_id)) else: print('{}: Chocolate'.format(my_id)) else: print('{}: Are you kidding?'.format(my_id))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。