• L2-015 互评成绩


    学生互评作业的简单规则是这样定的:每个人的作业会被k个同学评审,得到k个成绩。系统需要去掉一个最高分和一个最低分,将剩下的分数取平均,就得到这个学生的最后成绩。本题就要求你编写这个互评系统的算分模块

    输入格式:

    输入第一行给出3个正整数N(3 < N ≤104,学生总数)、k(3 ≤ k ≤ 10,每份作业的评审数)、M(≤ 20,需要输出的学生数)。随后N行,每行给出一份作业得到的k个评审成绩(在区间[0, 100]内),其间以空格分隔。

    输出格式:

    按非递减顺序输出最后得分最高的M个成绩,保留小数点后3位。分数间有1个空格,行首尾不得有多余空格。

    输入样例:

    1. 6 5 3
    2. 88 90 85 99 60
    3. 67 60 80 76 70
    4. 90 93 96 99 99
    5. 78 65 77 70 72
    6. 88 88 88 88 88
    7. 55 55 55 55 55

    输出样例:

    87.667 88.000 96.000
    

    代码长度限制

    16 KB

    时间限制

    300 ms

    内存限制

    64 MB

    1. #include
    2. #include
    3. #include
    4. #include
    5. using namespace std;
    6. inline int min(int a, int b){return a
    7. struct Record{
    8. double average;
    9. int score[10];
    10. };
    11. //重写优先队列的小于号
    12. bool operator<(const Record& p1, const Record& p2){
    13. if(p1.average-p2.average<=1e-6) //当两个浮点数相差小于1e-6则认为两个浮点数相等
    14. return true;
    15. else
    16. return false;
    17. }
    18. //创建优先队列
    19. priority_queue st;
    20. //创建数组
    21. vector<double> ls;
    22. int N, k, M; //N为学生总数,k为每份作业的评审数,M为需要输出的学生数
    23. int main(int argc, char* argv[]){
    24. cin >> N >> k >> M;
    25. Record tmp;
    26. for(int i = 0; i < N; i++){
    27. tmp.average = 0.0; //重置平均分
    28. for(int j = 0; j < k; j++){
    29. cin >> tmp.score[j]; //输入成绩
    30. }
    31. sort(tmp.score,tmp.score+k);//对Record的score进行排序
    32. for(int s = 1; s < k-1; s++){ //去掉最高分和最低分
    33. tmp.average+=tmp.score[s];
    34. }
    35. tmp.average /= (k-2); //算平均值
    36. st.push(tmp); //将当前Record放入优先队列
    37. }
    38. //得到得分最高的三个学生
    39. for(int j = 0; j < M; j++){
    40. tmp = st.top();
    41. st.pop();
    42. ls.push_back(tmp.average);
    43. }
    44. cout << fixed << setprecision(3) << ls[M-1];
    45. for(int x = M-2; x >= 0; x--){
    46. cout << " " << fixed << setprecision(3) << ls[x];
    47. }
    48. return 0;
    49. }

     

  • 相关阅读:
    聊聊自动化测试想法
    企业微信可以取消实名认证吗?如何操作
    C# CS0120解决办法
    python自动开发,基础——1
    9.13 | day 6 |day 45| to 完全平方数
    RK3588 rtc-hym8563设备开发
    Docker (六)【Docker Compose】
    Python安装教程
    MySQL8.0安装教程
    代码随想录算法训练营19期第45天
  • 原文地址:https://blog.csdn.net/weixin_63484669/article/details/134340562