文章

3

粉丝

51

获赞

3

访问

1.8k

头像
成绩排序2.0 题解:
P1159 清华大学上机题
发布于2024年6月14日 18:30
阅读数 484

可以采用重载符号运算符的方式(sort默认会采用 < 的比较方式,也就是less)

#include<bits/stdc++.h>
using namespace std;

class Student {
public:
    int id, score;
    Student(int sid, int sscore) : id(sid), score(sscore) {}
    
    bool operator<(const Student &other) const {
        if (score != other.score) {
            return score < other.score; // 分数低的在前
        }
        return id < other.id; // 分数相同,id 小的在前
    }
};

int main() {
    int n;
    cin >> n;
    vector<Student> students;
    for (int i = 0; i < n; i++) {
        int sid, sscore;
        cin >> sid >> sscore;
        Student stu(sid, sscore);
        students.push_back(stu);
    }   
    sort(students.begin(), students.end()); // 默认使用的是 <  
//    sort(students.begin(), students.end(), greater<Student>()); // 如果重载的是大于>,需要标明比较函数 
    for (Student stu : students) {
        cout << stu.id << " " << stu.score << endl;
    }
} 
...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发