注意一、要求输出类型为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
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 )


