题目名称 1451. [CTSC 2001]GPA排名系统
输入输出 gpa1.in/out
难度等级 ★★★
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 10
题目来源 Gravatarcstdio 于2013-12-08加入
开放分组 全部用户
提交状态
分类标签
数学 CTS论文相关 高斯消元法
分享题解
通过:10, 提交:75, 通过率:13.33%
Gravatargolo 100 0.027 s 1.74 MiB C++
Gravatargolo 100 0.029 s 1.74 MiB C++
Gravatarmildark 100 0.059 s 0.88 MiB C++
Gravatarmildark 100 0.065 s 0.88 MiB C++
GravatarXDDD 100 0.066 s 0.88 MiB C++
Gravatarmildark 100 0.067 s 0.88 MiB C++
Gravatarmildark 100 0.068 s 0.88 MiB C++
Gravatarcstdio 100 0.071 s 0.88 MiB C++
Gravatarmikumikumi 100 0.180 s 1.23 MiB C++
Gravatar张灵犀不和我一般见识真可怕呢(笑 100 0.202 s 0.98 MiB C++
本题关联比赛
2022级数学专题练习赛5
关于 GPA排名系统 的近10条评论(全部评论)
第八个点到底是什么鬼!!
GravatarONCE AGAIN
2016-10-09 20:30 4楼
标程用不稳定的选排……节操呢……
改成按字典序排了。这道题“无法比较”的第二种情况出的非常不高明,因为高斯消元法的误差太大,有时舍入误差就能生造出来一个数值可观的非零元素。
现在的数据基于我的程序,其余点均是将标程输出的相同GPA学生按字典序排列后的结果,第8个点不同(标程是fail,我的输出是能比较,且下载的数据亦为能比较)也就是说,事实上数据中并未体现第二种无法比较的情况。
一些参数如下:eps=1e-8,未按小数点后三位精度排(事实上在大多数情况下相等的都是严格相等),对eps的处理是只在用到相等/非零等时进行比较,但不将<eps的元素置为0.选取消元元素时是选取某列中的最大值。那个90分的pascal是标程,参数基本类似,但它消元元素的选取是“后面”(即从上到下从左到右的遍历序)第一个非零元素
Gravatarcstdio
2013-12-11 22:47 3楼
回复 @你的节操碎了地 :
配合你的ID
Gravatarcstdio
2013-12-11 22:38 2楼
回复 @cstdio :
碎了一地
Gravatar正确率超低的渣渣
2013-12-11 21:30 1楼

1451. [CTSC 2001]GPA排名系统

★★★   输入文件:gpa1.in   输出文件:gpa1.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】

目前,高等院校往往采用 $GPA(Grade$ $Point$ $Average)$来评价学生的学术表现。传统的排名方式是求每一个学生的平均成绩,以平均成绩作为依据进行排名。

但是这样的排名方法已经引起了教育界以及社会各界人士的争议。因为它存在着许多弊端。对于不同的课程,选课学生的平均成绩会不同程度地受到课程的难易程度和老师的严厉程度的制约。因而这样的排名系统无形中就鼓励了学生选择一些比较容易的课程,因为这样可以事半功倍地获得较高的平均分。


为了克服这些弊端,我们需要对排名系统做一定的改进。

一种改进的方案是对选第 $i$ 门课的每一个学生的成绩加上一个特定的修正值 $d_i$,例如编号为j的学生该课的成绩 $G_{ij}$ 修改为 $G'_{ij} = G_{ij} + d_i$。最终使得经过调整后,该课的平均分等于选该课的所有学生的所有课的平均分。对每一门课都做这样的调整,使得上述条件对所有课程都满足。这种调整方案一定程度地避免了传统排名系统的不公正。而你的任务正是根据一个大学某一个年级学生某学年的成绩,给出他们的排名。假设每一个学生都至少选一门课。

【输入格式】

输入文件第一行是两个正整数 $m(1 \leq m \leq 500)$ 和 $n(1 \leq n \leq 100)$,分别表示学生人数和课程数目。

接下来 $m$ 行是一个矩阵,矩阵中第 $i$ 行的第 $j$ 个元素表示第 $i$ 个学生第 $j$ 门课的成绩 $G_{ij}$。输入的成绩是一个 $0$ 到 $100$ 之间的整数,如果该学生没有选这门课,那么 $G_{ij}=-1$。由于该方案的施行只是为了获得更加科学的排名,因此调整后的成绩的数值大小本身没有什么意义,因此调整后的成绩可以不是 $0 \sim 100$ 之间的数。

【输出格式】

输出采用改进方案后这些学生的排名,以学生编号的形式输出,每行是一个学生的编号。

如果在上述调整后,有若干学生平均分相等,则他们的名次相同,按照学生编号顺序输出

当然许多时候,上述调整无法顺利进行,即调整的目标无法达到。(因此,在实际问题中,我们往往在最小二乘意义下获得一种最接近目标的调整方案。)也有可能或者因调整不唯一而不能确定学生的名次。若以上两种情况发生,则输出“$fail$”。

【样例1输入】

4 2
60 -1
70 -1
80 45
-1 65

【样例1输出】

4
3
2
1

【样例1说明】

一种可行的调整方法是:

第一门课每一个学生的成绩加上 $10$,第二门课每一个学生的成绩加上 $35$。

调整后的情况是:

$70$ $–1$

$80$ $–1$

$90$ $80$

$-1$ $100$

调整后第一门课的平均分为:$(70 + 80 + 90) / 3 = 80$

选第一门课的所有学生的所有课的平均分为:$(70 + 80 + 90 + 80) / 4 = 80$。

第二门课的平均分为:$(80 + 100) / 2 = 90$。

选第二门课的所有学生的所有课的平均分为:$(90 + 80 + 100) / 3 = 90$。

然后,计算每一个学生的平均分并且排名,即得到了输出的结果。

【样例2输入/输出】

点击下载样例2

【数据规模】

对于 $40\%$ 的数据,$1 \leq m \leq 10 , 1 \leq n \leq 20$;

对于 $100\%$ 的数据,$1 \leq m \leq 500 , 1 \leq n \leq 100$;

【来源】

$CTSC2001$