总时间限制: 内存限制:
1000ms 65536kB
students = {}
n = int(input())
for i in range(n):
course, name, score = input().split()
if name not in students:
students[name] = {}
students[name][course] = score
students[name]["participation"] = False
n = int(input())
for i in range(n):
s = input().split()
for j in range(1, int(s[0]) + 1):
for k in students.items():
value = k[1]
if s[j] in value: #代表该学生考过这个
if "total" not in value:
value["total"] = int(value[s[j]])
else:
value["total"] = int(value[s[j]]) + value["total"]
for k in students.items():
values = k[1]
isParticipation = 0
for l in range(1, int(s[0]) + 1):
if s[l] in values:
isParticipation += 1
if isParticipation == int(s[0]):#该名学生这一组课都考过
values["participation"] = True #标记参与了这一组全部考试
values["avg"] = float(values["total"]) / int(s[0]) #计算平均值
values["total"] = 0
maxAvg = {}#记录最高平均分
for k in students.items():
values = k[1]
if values["participation"]:
if maxAvg:
if maxAvg["avg"] <= values["avg"]:
if maxAvg["avg"] == values["avg"]:
if maxAvg["name"] > k[0]:
maxAvg["name"] = k[0]
maxAvg["avg"] = values["avg"]
else:
pass
else:
maxAvg["name"] = k[0]
maxAvg["avg"] = values["avg"]
else:#第一次添加为空
maxAvg["name"] = k[0]
maxAvg["avg"] = values["avg"]
values["participation"] = False
print(maxAvg["name"])
描述
古人云:“开卷有益”。但是,著名的社会学家小明认为内卷是有害的,并且他正在写一篇与P大内卷现状有关的论文,需要选取具有代表性的“卷王”们进行访谈。小明现在搞到了一份长长的成绩单,拜托你写个程序,帮他找出成绩单上的“卷王”们。
“卷王”的定义是:给定一组课程,这组课程全部上过的学生中,这组课程平均分最高的学生。小明已经通过复杂的数据挖掘手段得到了要分析的课程组,现在需要你按照上述定义,对每组课程找出那个真正的“卷王”。
输入
第1行:一个整数n, 1 <= n <= 100000
第2~(n+1)行:每行有用空格分隔的两个字符串和一个整数,前两个字符串分别代表课程名和学生名,最后一个整数代表这个学生在此课程中取得的成绩。输入保证课程名和学生名只包含字母,且一个学生在一个课程中不会出现两次成绩。输入保证课程数量不超过1000门,且每门课的学生数量不超过100人。输入不保证任何顺序。
第n+2行:一个整数m,代表查询的个数,即课程组的组数。1 <= m <= 10
接下来m行:每行是一个课程组,第一个整数k代表该组课程的数量,1 <= k <= 100,后面有k个字符串,表示k个课程名。整数k和字符串之间均用一个空格分隔。数据保证课程名一定在之前出现过。输出为m行,每行对应一个课程组,输出该组课程平均分最高的学生,只考虑学过该组全部课程的学生。如果平均分最高的学生多于一个,输出姓名按英文词典排序最靠前的学生。数据保证对每组课程,都存在学过该组所有课程的学生。
样例输入
22 JiSuanGaiLunA XiaoWang 100 JiSuanGaiLunA XiaoZhang 98 JiSuanGaiLunA XiaoHong 95 GaoDengShuXue XiaoHong 95 GaoDengShuXue XiaoZhang 84 GaoDengShuXue XiaoWang 82 GaoDengShuXue XiaoHuang 88 MeiRenLiJieJiSuanJiXiTong XiaoWang 82 MeiRenLiJieJiSuanJiXiTong XiaoZhang 84 MeiRenLiJieJiSuanJiXiTong XiaoHong 99 MeiRenLiJieJiSuanJiXiTong XiaoDuan 100 PythonCongRuMengDaoFangQi HYL 100 PythonCongRuMengDaoFangQi SWE 98 PythonCongRuMengDaoFangQi CDW 95 PythonCongRuMengDaoFangQi ASC 92 PythonCongRuMengDaoFangQi DEF 90 GuHanYu HYL 95 GuHanYu ASC 90 GuHanYu CDW 86 CollegeEnglish SWE 82 CollegeEnglish CDW 85 CollegeEnglish DEF 82 3 3 JiSuanGaiLunA GaoDengShuXue MeiRenLiJieJiSuanJiXiTong 2 PythonCongRuMengDaoFangQi GuHanYu 2 PythonCongRuMengDaoFangQi CollegeEnglish
样例输出
XiaoHong HYL CDW



