其他分享
首页 > 其他分享> > 2022.1.24开始记录自己的acm点滴#HDU-1236

2022.1.24开始记录自己的acm点滴#HDU-1236

作者:互联网

2022-01-24

一个什么也不会的人,跟着北理2020年冬训视频做题:2020 BIT冬训

A-排名

 

思路:按照题意模拟出过程,初步运用c++语言,主要解决点在于 每个学生为一个{string,int}的struct,sort函数排序的比较函数cmp自己定义为:

int cmp(students a, students b)
{
if (a.sum != b.sum)
   return a.sum > b.sum;
else
   return a.num.compare(b.num)<0;
}

其中string的比较函数使用,return的形式让我有所领悟。

题解:

#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
struct students {
string num;
int sum;
};
int cmp(students a, students b)
{
if (a.sum != b.sum)
return a.sum > b.sum;
else
return a.num.compare(b.num)<0;
}
int main(void)
{
students temp;
int tishu_ido,tihao_ido;
int timu[11];
int N, M, G;
while (cin >> N)//读入第一个数
{
vector<students>stu;
if (N == 0)
return 0;//判断是否结束
cin >> M >> G;

for (int i = 1;i <= M;i++)
cin >> timu[i];//读入当前组的各个题目分

for (int i = 0;i < N;i++)
{
temp.sum = 0;
cin >> temp.num;
cin >> tishu_ido;
for (int j = 0;j < tishu_ido;j++)
{
cin >> tihao_ido;
temp.sum += timu[tihao_ido];
}//获取单个学生总分

if (temp.sum >= G)
stu.push_back(temp);
}//得到单组学生的数据

sort(stu.begin(), stu.end(), cmp);//排序
cout << stu.size() << endl;

for (int i = 0;i < stu.size();i++)
cout <<stu[i].num << ' ' << stu[i].sum << endl;//输出
}
return 0;
}

标签:24,HDU,return,temp,int,sum,1236,ido,num
来源: https://www.cnblogs.com/Tiachi/p/15840386.html