题目链接

https://pintia.cn/problem-sets/994805260223102976/problems/994805307551629312

题解

思路比较简单,核心就是定义一个学生的排序规则:将考生分为4类(德和才分数都低于L的直接淘汰),先比较考生的类型,再比较分数或者准考证号,其中分数都是降序、准考证号是升序。

淘汰直接在获取考生信息时进行;分类由Student构造函数实现;考生排序由stuCmp实现。

// PAT BasicLevel 1015
// https://pintia.cn/problem-sets/994805260223102976/problems/994805307551629312 #include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std; int N, L, H, M;
class Student
{
public:
string id;
int de;
int cai;
int type;
Student(string id,int de,int cai){
this->id=id;this->de=de;this->cai=cai;
if (de >= H && cai >= H){//才德全尽
this->type=3;
}else if(de>=H&&cai<H){//德胜才
this->type = 2;
}else if(de<H&&cai<H&&de>=cai){//“才德兼亡”但尚有“德胜才”者
this->type = 1;
}else{//达到最低线L
this->type = 0;
}
}
void print(){
cout << id << ' ' << de << ' ' << cai << endl;
}
}; bool stuCmp(Student&, Student&); int main()
{
// 考生数 最低录取线 优先录取线
cin >> N >> L >> H; // 获取考生信息
vector<Student> stuVec;
string id;int de;int cai;
for(int i=0;i<N;i++){
cin >> id >> de >> cai;
// 只存储cai和de不低于L的
if (de >= L && cai >= L){
stuVec.push_back(Student(id, de, cai));
M++;
}
} // 学生排序
sort(stuVec.begin(),stuVec.end(),stuCmp); // 输出结果
cout << M << endl;
for (vector<Student>::iterator it = stuVec.begin(); it != stuVec.end(); ++it){
it->print();
} //system("pause");
return 0;
} bool stuCmp(Student &s1, Student &s2)
{
if(s1.type==s2.type){// 同种type,比较总分
if (s1.cai + s1.de == s2.cai + s2.de){
if(s1.de==s2.de){
// id升序输出,其他都是降序输出的
return s1.id < s2.id;
}else{
return s1.de>s2.de;
}
}else{
return s1.cai + s1.de > s2.cai + s2.de;
}
}else{
return s1.type>s2.type;
}
}

作者:@臭咸鱼

转载请注明出处:https://www.cnblogs.com/chouxianyu/

欢迎讨论和交流!


PAT乙级1015的更多相关文章

  1. PAT 乙级 1015

    题目 题目地址:PAT 乙级 1015 题解 常规题,难点在于理清楚排序规则,通过比较简洁的方式进行编码: 在这里我选择使用vector进行存储,并使用sort方法排序,因为本题不是简单按照大小排序, ...

  2. PAT乙级 1015. 德才论 (25)

    1015. 德才论 (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Li 宋代史学家司马光在<资治通鉴&g ...

  3. PAT——乙级1015/甲级1062:德才论

    这两个题是一模一样的 1015 德才论 (25 point(s)) 宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德 ...

  4. pat 乙级 1015. 德才论 (25) c++

     http://39.106.25.239 个人网站 欢迎访问 交流 1015. 德才论 (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Sta ...

  5. C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - P ...

  6. PAT乙级真题及训练题 1025. 反转链表 (25)

    PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...

  7. PAT 乙级 1024

    题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ...

  8. PAT 乙级 1017

    题目 题目地址:PAT 乙级 1017 题解 粗看是一道大数除法题,实际上只不过是通过字符数组模拟除法过程,理解之后还是比较简单的: 具体分析一下本题: 因为题设中的除数(n)是一位整数,因此大幅简化 ...

  9. PAT 乙级 1003

    题目 题目地址:PAT 乙级 1003 题解 规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意:总之这道题要考虑的东西更多,细节上也要特别注意: 规律:“如果 aPbTc 是 ...

随机推荐

  1. 攻防世界新手Misc writeup

    ext3 在Linux,使用root账户挂载linux文件,打开后使用find *|grep flag查找到一个flag.txt,打开后是base64编码,解码获得flag. give_you_fla ...

  2. Redis集群的原理和搭建(转载)

    转载来源:https://www.jianshu.com/p/c869feb5581d Redis集群的原理和搭建 前言 Redis 是我们目前大规模使用的缓存中间件,由于它强大高效而又便捷的功能,得 ...

  3. addRoutes进行权限控制

    用addRoutes实现动态路由:https://www.jianshu.com/p/0bea4a1b0350 详解基于vue,vue-router, vuex以及addRoutes进行权限控制:ht ...

  4. 今盒子里有n个小球,A、B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个

    /* 题目描述 今盒子里有n个小球,A.B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断. 我们约定: 每个人从盒子中取出的球 ...

  5. Appendix 2- Lebesgue integration and Reimann integration

    Lebesgue integration and Reimann integration: Reimann: Split up the axis into equal intervals, then ...

  6. [转帖]Nginx 容器教程

    Nginx 容器教程 http://www.ruanyifeng.com/blog/2018/02/nginx-docker.html 里面有证书. 作者: 阮一峰 日期: 2018年2月27日 感谢 ...

  7. java水题集

    POJ - 1220 进制转换 import java.io.*; import java.util.*; import java.math.*; public class Main { public ...

  8. 从入门到自闭之Python--MySQL数据库的单表操作

    单表查询:select * from 表 where 条件 group by 分组 having 过滤 order by 排序 limit n; 语法: select distinct 字段1,字段2 ...

  9. go get 安装一个特定版本的包失败解决方法

    场景描述 go get 下载第三方包golang gin框架时,会去下载gopkg.in/go-playground/validator.v8包以及gopkg.in/yaml.v2包,gopkg.in ...

  10. 牛客 109 C 操作数 (组合数学)

    给定长度为n的数组a,定义一次操作为:1. 算出长度为n的数组s,使得si= (a[1] + a[2] + ... + a[i]) mod 1,000,000,007:2. 执行a = s:现在问k次 ...