1 条题解

  • 0
    @ 2025-8-24 22:13:55

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Yxa_Sheep
    打表过样例,暴力出奇迹,搜索真牛逼,骗分进省一||深搜 MLE,广搜 TLE,打表 RE,退火又 CE||删掉 display 看主页||被封取关(解封后私信)||六年级蒟蒻 ,代词请用“他”||当前状态:<离线>

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

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

    以下是正文


    题目传送门

    题意

    给定 nn 个同学的姓名与成绩,找出总分最高,输入顺序最前的人的名字与每门科目的成绩。

    思路

    用结构体存下每个同学的信息,然后用 sort 排序,这里 cmp 函数要自己写。这题的难点在于输出输入时最靠前的人,我们可以用 idid 存下每个人是第几个输入的,如果总分相同就比较谁 idid 更小的。细节看代码。

    代码

    #include <bits/stdc++.h>
    using namespace std;
    int n;
    struct node
    {
    	char name[18];
    	int id, x, y, z, sum;
    } a[1010];
    bool cmp(node a, node b) 
    { 
        if (a.x + a.y + a.z == b.x + b.y + b.z)
            return a.id < b.id;
        return a.x + a.y + a.z > b.x + b.y + b.z; 
    }
    int main()
    {
    	scanf("%d", &n);
    	for (int i = 1; i <= n; i++)
        	scanf("%s%d%d%d", a[i].name, &a[i].x, &a[i].y, &a[i].z), a[i].id = i;
    	sort(a + 1, a + n + 1, cmp);
    	printf("%s %d %d %d", a[1].name, a[1].x, a[1].y, a[1].z);
    	return 0;
    }
    

    题解来之不易,且看且珍惜。给个赞再走吧。

    题目传送门

    • 1

    信息

    ID
    4718
    时间
    1000ms
    内存
    128MiB
    难度
    2
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者