成绩排序 (清华大学考研机试题)

简介: 成绩排序 (清华大学考研机试题)

文章目录

  • AcWing 3375. 成绩排序
  • AC代码


AcWing 3375. 成绩排序

本题链接:AcWing 3375. 成绩排序

本博客给出本题截图

66.png

AC代码

代码解释:题目中要求的无非就是在分数一样的情况下,排序的顺序仍为输入时的顺序,故本题可以用stable_sort,这个函数实现的本质为归并排序,属于稳定排序,是可以直接满足题目需求的,只需要重载小于号和大于号即可,用sort也可以,但是如果用sort排序,我们在重载大于号和小于号的时候还需要传入一个id(顺序),如果score值相同的话,返回id小的数。


关于重载运算法:直接记住固定格式即可。


代码:

stable_sort版本

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 1010;
struct Person
{
    string name;
    int score;
    bool operator < (const Person& t) const     //重载小于号
    {
        return score < t.score;
    }
    bool operator > (const Person& t) const     //重载大于号
    {
        return score > t.score;
    }
}q[N];
int main()
{
    int n, m;
    cin >> n >> m;
    for (int i = 0; i < n; i ++ ) 
        cin >> q[i].name >> q[i].score;
    if (m) stable_sort(q, q + n);
    else stable_sort(q, q + n, greater<Person>());
    for (int i = 0; i < n; i ++ ) 
        cout << q[i].name << ' ' << q[i].score << endl;
    return 0;
}


sort版本

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 1010;
struct Person
{
    string name;
    int score;
    int id;
    bool operator < (const Person& t) const            //重载小于号
    {
        if (score != t.score) return score < t.score;
        else return id < t.id;
    }
    bool operator > (const Person& t) const            //重载大于号
    {
        if (score != t.score) return score > t.score;
        else return id < t.id;
    }
}q[N];
int main()
{
    int n, m;
    cin >> n >> m;
    for (int i = 0; i < n; i ++ ) 
    {
        cin >> q[i].name >> q[i].score;
        q[i].id = i;
    }
    if (m) sort(q, q + n);
    else sort(q, q + n, greater<Person>());
    for (int i = 0; i < n; i ++ ) 
        cout << q[i].name << ' ' << q[i].score << endl;
    return 0;
}


目录
相关文章
日期累加(北京理工大学考研机试题)
日期累加(北京理工大学考研机试题)
87 0
日期累加(北京理工大学考研机试题)
|
算法
进制转换2 (清华大学考研机试)
进制转换2 (清华大学考研机试)
77 0
进制转换2 (清华大学考研机试)
|
存储 算法
进制转换 (清华大学考研机试)
进制转换 (清华大学考研机试)
72 0
进制转换 (清华大学考研机试)
成绩排序2 (清华大学考研机试题)
成绩排序2 (清华大学考研机试题)
85 0
成绩排序2 (清华大学考研机试题)
|
机器学习/深度学习
[再寄小读者之数学篇](2014-04-18 from 352558840@qq.com [南开大学 2014 年高等代数考研试题]行列式的计算)
(2014-04-18 from 352558840@qq.com [南开大学2014年高等代数考研试题]) 设 $n$ 阶行列式 $\sev{\ba{cccc} a_{11}&\cdots&a_{1n}\\ \vdots&\ddots&\vdots\\ a_{n1}&\cdots&a_{nn} \ea}=1,$ 且满足 $a_{ij}=-a_{ji}, i,j=1,2,\cdots,n$.
979 0
[再寄小读者之数学篇] (2014-04-18 from 352558840@qq.com [南开大学 2014 年高等代数考研试题]一个秩等式)
(2014-04-18 from 352558840@qq.com [南开大学 2014 年高等代数考研试题]) 设 ${\bf A}$ 为 $s\times n$ 矩阵. 证明: $$\bex s-\rank({\bf E}_s-{\bf A}{\bf A}^T)=n-\rank({\bf E}_n-{\bf A}^T{\bf A}).
1199 0
|
Perl
南开大学2012年数学分析考研试题参考解答
1 ($15'$) 求极限 $\dps{\lim_{x\to \infty} x^m \int_0^\frac{1}{x} \sin t^2\rd t,}$ 其中 $m$ 为任意整数. 解答: 当 $m=0,-1,-2,\cdots$ 时, 原极限 $\dps{=\lim_{s\to 0}s^{-m}\int_0^s \sin t^2\rd t=0.
1000 0
|
机器学习/深度学习 测试技术
【Programming Clip】06、07年清华计算机考研上机试题解答(个别测试用例无法通过)
作者:gnuhpc  出处:http://www.cnblogs.com/gnuhpc/ 1.清华计算机系研究生考试上机07年试题解答(自己今天上午做的,有一个不能完成所有测试用例~)   清华大学计算机科学与技术系 2007 年硕士研究生招生复试 2007 年 3 月 24 日 注意事项: 1. 试题共三题,总计 100 分,考试时间为一个半小时。
719 0

热门文章

最新文章

下一篇
DataWorks