栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

openjudge(python)-082:更强的卷王查询系统

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

openjudge(python)-082:更强的卷王查询系统

082:更强的卷王查询系统

总时间限制:        内存限制: 

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753139.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号