注意一、要求输出类型为1的指令时,查询为空则输出NA。即if len(p) == 0:print("NA"),只用if find[1] not in level:print("NA")只能判断指令是否是"A"、"B"、"T",不能用来判断是否是空集,测试点1、2会报错。类型为2或3时,可以使用if find[1] not in room_num:print("NA")或if find[1] not in date:print("NA"),因为在分类时已经排除没有的情况。类型1也可以在开始建立空字典,排除没有的情况。
注意二、使用sort()方法或sorted()函数来排序时,降序符号"-"不能对字符串使用,只能对整型使用
偶尔通过。创建包含"A"、"B"、"T"的字典
n, m = map(int, input().split())
level = {"A": [], "B": [], "T": []}
room_num = {}
date = {}
for i in range(n):
num, score = input().split()
score = int(score)
if num[0] in level:
level[num[0]].append([num, score])
room = num[1:4]
if room in room_num:
room_num[room][0] += 1
room_num[room][1] += score
else:
room_num[room] = [1, score]
t = num[4:10]
if t not in date:
date[t] = {}
if room not in date[t]:
date[t][room] = 1
else:
date[t][room] += 1
for j in range(m):
find = input().split()
print("Case %d:" % (j + 1), find[0], find[1])
if find[0] == "1":
if find[1] in level: % 判断指令是否是A、B、T
p = level[find[1]]
if len(p) != 0: % 判断是否为空集
p.sort(key=lambda x:(-x[1], x[0])) % "-" 只能对整型使用
for i in p:
print(*i, sep=" ")
else:
print("NA")
else:
print("NA")
elif find[0] == "2":
if find[1] not in room_num:
print("NA")
else:
print(*room_num[find[1]], sep=" ")
elif find[0] == "3":
if find[1] in date:
s = date[find[1]]
s = sorted(s.items(), key=lambda x: (-x[1], x[0]))
for i in s:
print(*i, sep=" ")
else:
print("NA")
else:
print("NA")
偶尔通过。创建三个空字典
n, m = map(int, input().split())
level = {}
room_num = {}
date = {}
for i in range(n):
num, score = input().split()
score = int(score)
if num[0] in level:
level[num[0]].append([num, score])
else:
level[num[0]] = []
level[num[0]].append([num, score])
room = num[1:4]
if room in room_num:
room_num[room][0] += 1
room_num[room][1] += score
else:
room_num[room] = [1, score]
t = num[4:10]
if t not in date:
date[t] = {}
if room not in date[t]:
date[t][room] = 1
else:
date[t][room] += 1
for j in range(m):
find = input().split()
print("Case %d:" % (j + 1), find[0], find[1])
if find[0] == "1":
if find[1] in level:
p = level[find[1]]
p.sort(key=lambda x:(-x[1], x[0]))
for i in p:
print(*i, sep=" ")
else:
print("NA")
elif find[0] == "2":
if find[1] not in room_num:
print("NA")
else:
print(*room_num[find[1]], sep=" ")
elif find[0] == "3":
if find[1] in date:
s = date[find[1]]
s = sorted(s.items(), key=lambda x: (-x[1], x[0]))
for i in s:
print(*i, sep=" ")
else:
print("NA")
else:
print("NA")
测试点3、4超时
n, m = map(int, input().split())
level = {"A": {}, "B": {}, "T": {}}
room_num = {}
date = {}
for i in range(n):
num, score = input().split()
if num[0] in level:
level[num[0]][num] = score
room = num[1:4]
if num[1:4] in room_num:
room_num[num[1:4]][0] += 1
room_num[num[1:4]][1] += int(score)
else:
room_num[num[1:4]] = [1, int(score)]
t = num[4:10]
if t not in date:
date[t] = {}
if room not in date[t]:
date[t][room] = 1
else:
date[t][room] += 1
for j in range(m):
find = input().split()
print("Case %d:" % (j + 1), find[0], find[1])
if find[0] == "1":
if find[1] in level:
p = level[find[1]]
if len(p) != 0:
p = sorted(p.items(),key=lambda x:(-int(x[1]), x[0]))
for i in p:
print(*i, sep=" ")
else:
print("NA")
else:
print("NA")
elif find[0] == "2":
if find[1] not in room_num:
print("NA")
else:
print(*room_num[find[1]], sep=" ")
elif find[0] == "3":
if find[1] in date:
s = date[find[1]]
s = sorted(s.items(), key=lambda x: (-x[1], x[0]))
for i in s:
print(*i, sep=" ")
else:
print("NA")
else:
print("NA")
测试点1,2错误,3、4超时
n, m = map(int, input().split())
stu = {}
for i in range(n):
num, score = input().split()
stu[num] = score
for j in range(m):
find = input().split()
if find[0] == "1" and find[1] in ["A", "B", "T"]:
result = []
for k in stu:
if find[1] == k[0]:
result.append([k, stu[k]])
result.sort(key=lambda x: (-int(x[1]), x[0]))
print("Case %d:" % (j + 1), find[0], find[1])
for i in result:
print(*i, sep=" ")
elif find[0] == "2":
count = 0
s = 0
for k in stu:
if find[1] == k[1:4]:
s += int(stu[k])
count += 1
print("Case %d:" % (j + 1), find[0], find[1])
if count == 0:
print("NA")
else:
print(count, s)
elif find[0] == "3":
result = {}
for k in stu:
if find[1] == k[4:10]:
if k[1:4] in result:
result[k[1:4]] += 1
else:
result[k[1:4]] = 1
result = sorted(result.items(), key=lambda x: (-x[1], x[0]))
print("Case %d:" % (j + 1), find[0], find[1])
if len(result) == 0:
print("NA")
else:
for i in result:
print(*i, sep=" ")
else:
rint("Case %d:" % (j + 1), find[0], find[1])
print("NA")
测试点1、2错误,3、4超时
n, m = map(int, input().split())
stu = {}
level_A = []
level_B = []
level_T = []
room_num = {}
for i in range(n):
num, score = input().split()
stu[num] = score
if num[0] == "A":
level_A.append([num,score])
elif num[0] == "B":
level_B.append([num,score])
elif num[0] == "T":
level_T.append([num,score])
if num[1:4] in room_num:
room_num[num[1:4]][0] += 1
room_num[num[1:4]][1] += int(score)
else:
room_num[num[1:4]] = [1,int(score)]
for j in range(m):
find = input().split()
print("Case %d:" % (j + 1), find[0], find[1])
if find[0] == "1":
if find[1] == "A":
level_A.sort(key=lambda x:(-int(x[1]),x[0]))
for i in level_A:
print(*i, sep=" ")
elif find[1] == "B":
level_B.sort(key=lambda x: (-int(x[1]), x[0]))
for i in level_B:
print(*i, sep=" ")
elif find[1] == "T":
level_T.sort(key=lambda x: (-int(x[1]), x[0]))
for i in level_T:
print(*i, sep=" ")
else:
print("NA")
elif find[0] == "2":
if find[1] not in room_num:
print("NA")
else:
print(*room_num[find[1]],sep=" ")
elif find[0] == "3":
result = {}
for k in stu:
if find[1] == k[4:10]:
if k[1:4] in result:
result[k[1:4]] += 1
else:
result[k[1:4]] = 1
result = sorted(result.items(), key=lambda x: (-x[1], x[0]))
if len(result) == 0:
print("NA")
else:
for i in result:
print(*i, sep=" ")
else:
print("NA")