1 条题解

  • 0
    @ 2026-10-20 23:56:07

    【深基7.例9】最厉害的学生

    解题思路

    依次读入学生信息,比较总分;只有当前总分严格大于历史最高总分时才替换。

    正确性说明

    处理前 k 人后始终保存最高总分中最早出现者。更高分必须替换,同分保持原记录,因此最终满足两项要求。

    易错点

    同分不能替换;输出姓名与三科原成绩,而不是总分。

    复杂度

    时间 O(N),空间 O(1),姓名长度有常数上界。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        int n;
        cin >> n;
        string best;
        int ba = 0, bb = 0, bc = 0, mx = -1;
        while (n--) {
            string s;
            int a, b, c;
            cin >> s >> a >> b >> c;
            if (a + b + c > mx) {
                mx = a + b + c;
                best = s;
                ba = a;
                bb = b;
                bc = c;
            }
        }
        cout << best << " " << ba << " " << bb << " " << bc << "\n";
        return 0;
    }
    
    • 1

    信息

    ID
    10
    时间
    1000ms
    内存
    128MiB
    难度
    进阶
    标签
    递交数
    1
    已通过
    1
    上传者