PAT乙级1015
题目链接
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的更多相关文章
- PAT 乙级 1015
题目 题目地址:PAT 乙级 1015 题解 常规题,难点在于理清楚排序规则,通过比较简洁的方式进行编码: 在这里我选择使用vector进行存储,并使用sort方法排序,因为本题不是简单按照大小排序, ...
- PAT乙级 1015. 德才论 (25)
1015. 德才论 (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Li 宋代史学家司马光在<资治通鉴&g ...
- PAT——乙级1015/甲级1062:德才论
这两个题是一模一样的 1015 德才论 (25 point(s)) 宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德 ...
- pat 乙级 1015. 德才论 (25) c++
http://39.106.25.239 个人网站 欢迎访问 交流 1015. 德才论 (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Sta ...
- C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - P ...
- PAT乙级真题及训练题 1025. 反转链表 (25)
PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...
- PAT 乙级 1024
题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ...
- PAT 乙级 1017
题目 题目地址:PAT 乙级 1017 题解 粗看是一道大数除法题,实际上只不过是通过字符数组模拟除法过程,理解之后还是比较简单的: 具体分析一下本题: 因为题设中的除数(n)是一位整数,因此大幅简化 ...
- PAT 乙级 1003
题目 题目地址:PAT 乙级 1003 题解 规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意:总之这道题要考虑的东西更多,细节上也要特别注意: 规律:“如果 aPbTc 是 ...
随机推荐
- public static void main(String[] args) 是什么意思?
public static void main(String[] args),是java程序的入口地址,java虚拟机运行程序的时候首先找的就是main方法. 一.这里要对main函数讲解一下,参数S ...
- 李宏毅 Tensorflow解决Fizz Buzz问题
提出问题 一个网友的博客,记录他在一次面试时,碰到面试官要求他在白板上用TensorFlow写一个简单的网络实现异或(XOR)功能.这个本身并不难,单层感知器不能解决异或问题是学习神经网络中的一个常识 ...
- BTree B+Tree
简介 B 树是为了磁盘或其它存储设备而设计的一种多叉平衡查找树.(相对于二叉,B树每个内结点有多个分支,即多叉)B树又可以写成B-树/B-Tree,并不是B“减”树,横杠为连接符,容易被误导首先我们介 ...
- [bzoj1775][Usaco2009 Dec]Vidgame 电视游戏问题_背包dp
1775: [Usaco2009 Dec]Vidgame 电视游戏问题 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1775 题解: 发 ...
- [转帖]Nginx 容器教程
Nginx 容器教程 http://www.ruanyifeng.com/blog/2018/02/nginx-docker.html 里面有证书. 作者: 阮一峰 日期: 2018年2月27日 感谢 ...
- hive的hiveserver2模式启动不起来,发现Hadoop一直处于安全模式
hive的hiveserver2模式启动不起来,发现Hadoop一直处于安全模式 命令介绍 命令hadoop fs –safemode get 查看安全模式状态 命令hadoop fs –safemo ...
- 什么是阿里云ACE认证
作为国内最大的云计算服务商,阿里云不仅引领着中国云计算技术在全球范围内扩大版图,同时还责无旁贷的承担着培养.壮大中国云生态人才力量的使命. 阿里云自2015年推出国内首个公有云技术认证以来,短短三年已 ...
- [POI2011]ROT-Tree Rotations 题解
题面 这道题咋看都是无法从dp入手,那么就从数据结构入手!: 首先你要会权值线段树和线段树合并. 然后你要知道: 对于任意一个节点,交换左右子树对当前节点和前面的所有节点没有影响. 因为这是前序遍历: ...
- PAT B1023 组个最小数(20)
题目描述 给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的 ...
- selenium登录豆瓣网
登录流程: 实例化一个driver,然后driver.get()发送请求 最重要的:切换iframe子框架,因为豆瓣的网页中的登录那部分是一个ifrme,必须切换才能寻找到对应元素 利用seleniu ...