嗨嗨嗨,我来发题解了
2023-03-22 19:29:23
发布于:北京
245阅读
0回复
0点赞
废话不多说,开始讲题。
首先呢,我们先读一下题,这道题是让我们来排序。
输入样例首先让我想到了什么呢?就是struct。
于是我们就写出了第一段代码:定义struct
struct player{
char s[25];
int a, b, c, sum = 0, id;
}p[100005];
//这段大家应该都能看懂
然后是什么呢?没错,就是排序。
struct排序需要cmp函数,于是,我们就写出来了第二段代码:cmp函数
bool cmp(player x, player y)
{
if(x.sum != y.sum) return x.sum > y.sum;
if(x.a != y.a) return x.a > y.a;
if(x.b != y.b) return x.b > y.b;
return x.id < y.id;
}
最后是什么呢,没错,main函数
int main()
{
int n;
cin >> n;
for(int i = 1; i <= n; i++)
{
cin >> p[i].s >> p[i].a >> p[i].b >> p[i].c;
p[i].sum = p[i].a + p[i].b + p[i].c;
p[i].id = i;
}
sort(p + 1, p + n + 1, cmp);
for(int i = 1; i <= n; i++)
{
printf("%s %d\n",p[i].s, p[i].sum);//这里说一下,我本来是cout,但可能时间复杂度太高了,所以改成了printf
}
return 0;
}
最后来一个最终代码:
#include <bits/stdc++.h>
using namespace stdr;
struct player{
char s[25];
int a, b, c, sum = 0, id;
}p[100005];
bool cmp(player x, player y)
{
if(x.sum != y.sum) return x.sum > y.sum;
if(x.a != y.a) return x.a > y.a;
if(x.b != y.b) return x.b > y.b;
return x.id < y. id;
}
int main()
{
int n;
cin >> n;
for(int i = 1; i <= n; i++)
{
cin >> p[i].s >> p[i].a >> p[i].b >> p[i].sum;
p[i].sum = p[i].a + p[i].b + p[i].c;
p[i].id = i;
}
sort(p + 1, p + n + 1, cmp);
for(int i = 1; i <= n; i++)
{
printf("%s %d\n",p[i].s, p[i].sum);
}
return 0;
}
//已开启防抄袭
今天就到这里,拜拜
全部评论 3
防抄袭解法:把namespace右面的stdr改成std
2023-10-07 来自 浙江
1错了,还要把cin >> p[i].s >> p[i].a >> p[i].b >> p[i].sum;的sum改成c
2024-09-23 来自 广东
0
哇!好详细QwQ谢谢
2024-09-15 来自 北京
0详细
2024-05-12 来自 浙江
0
有帮助,赞一个