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; }
(牢记return的是 a>b 那么排序就是从大到小,总之一切向return的大于小于号看齐)
其中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; }

浙公网安备 33010602011771号