1 条题解

  • 0
    @ 2025-8-24 21:07:49

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar chen_zhe
    Aya 敲可爱的~

    搬运于2025-08-24 21:07:48,当前版本为作者最后更新于2025-05-28 13:46:28,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    欢迎报名洛谷网校,期待和大家一起进步!

    本题考察结构体,排序。

    我们用一个结构体 Stu 来存储每个学生的信息,包括学号 id(整数)和成绩 sc(浮点数):

    struct Stu {
        int id;
        double sc;
    }a[105];
    

    这样,我们可以直接使用 a[i].id 和 a[i].sc` 来获取第 ii 个学生的学号和成绩。

    题目中,要求出第 kk 名(也就是第 kk 大)的学生学号以及成绩,因此我们需要进行“排序”操作。我们可以使用选择排序算法,每次找出 aina_{i\dots n} 中最大的元素,把它和数组上第 ii 个位置的元素交换。

    参考代码:

    for (int i = 1; i <= n - 1; ++i) {
        int best = i;
        for (int j = i + 1; j <= n; ++j) {
            if (a[j].sc > a[best].sc)
                best = j;
        }
        if (best != i) {
            Stu tmp = a[i];
            a[i] = a[best];
            a[best] = tmp;
            // 以上 3 行可以简化为 swap(a[i], a[best]),需要 algorithm 头文件。
        }
    }
    
    • 1

    信息

    ID
    11815
    时间
    1000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    1
    已通过
    0
    上传者