1015 德才论 (25 分)

宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”

现给出一批考生的德才分数,请根据司马光的理论给出录取排名。

输入格式:

输入第一行给出 3 个正整数,分别为:N(≤10​5​​),即考生总数;L(≥60),为录取最低分数线,即德分和才分均不低于 L 的考生才有资格被考虑录取;H(<100),为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,此类考生按德才总分从高到低排序;才分不到但德分到线的一类考生属于“德胜才”,也按总分排序,但排在第一类考生之后;德才分均低于 H,但是德分不低于才分的考生属于“才德兼亡”但尚有“德胜才”者,按总分排序,但排在第二类考生之后;其他达到最低线 L 的考生也按总分排序,但排在第三类考生之后。

随后 N 行,每行给出一位考生的信息,包括:准考证号 德分 才分,其中准考证号为 8 位整数,德才分为区间 [0, 100] 内的整数。数字间以空格分隔。

输出格式:

输出第一行首先给出达到最低分数线的考生人数 M,随后 M 行,每行按照输入格式输出一位考生的信息,考生按输入中说明的规则从高到低排序。当某类考生中有多人总分相同时,按其德分降序排列;若德分也并列,则按准考证号的升序输出。

输入样例:

14 60 80
10000001 64 90
10000002 90 60
10000011 85 80
10000003 85 80
10000004 80 85
10000005 82 77
10000006 83 76
10000007 90 78
10000008 75 79
10000009 59 90
10000010 88 45
10000012 80 100
10000013 90 99
10000014 66 60

输出样例:

12
10000013 90 99
10000012 80 100
10000003 85 80
10000011 85 80
10000004 80 85
10000007 90 78
10000006 83 76
10000005 82 77
10000002 90 60
10000014 66 60
10000008 75 79
10000001 64 90

分析

本题题干比较长,先做简单分析,德才分数都达到最低分数线才参与排序。首先进行分类:

  1. 第一类:德才都>=H。
  2. 第二类:德>=H,才<H。
  3. 第三类:德才都<H,但德>=才。
  4. 第四类:德才都及格。
  5. 第五类:德才至少有一个不及格的考生。

然后对前四类考生共N个人进行排序:

  1. 类别从小到大排序。
  2. 同类别的按总分从大到小排序。
  3. 总分相同按德分从大到小排序。
  4. 得分相同按准考证号从小到大排序。

思路

定义一个结构体,来存放考生的准考证号、德分、才分、总分和类别。

对读入的考生分类、算总分、计算及格人数。使用sort函数,cmp函数按排序规则写。

2、3、4测试点始终不正确,认真检查了一遍才发现是第三类人的判断失误,原题描述为德分不低于才分,所以德>=才。

CODE:

#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;struct Student{char id[10];int de, cai, sum;int flag;
}stu[1000010];bool cmp(Student a, Student b){if(a.flag != b.flag) return a.flag < b.flag;else if(a.sum != b.sum) return a.sum > b.sum;else if(a.de != b.de) return a.de > b.de;else return strcmp(a.id,b.id) < 0;
}int main(){int n, L, H;scanf("%d%d%d", &n, &L, &H);int m = n; for(int i = 0; i < n; i ++){scanf("%s%d%d", &stu[i].id, &stu[i].de, &stu[i].cai);stu[i].sum = stu[i].de + stu[i].cai;if(stu[i].de < L || stu[i].cai < L){m--;stu[i].flag = 5;}else if(stu[i].de >= H && stu[i].cai >= H){stu[i].flag = 1;}else if(stu[i].de >= H && stu[i].cai < H) {stu[i].flag = 2;}else if(stu[i].de >= stu[i].cai) {stu[i].flag = 3;}else {stu[i].flag = 4;}}sort(stu, stu + n, cmp);printf("%d\n", m);for(int i = 0; i < m; i ++){printf("%s %d %d\n", stu[i].id, stu[i].de, stu[i].cai);}return 0;
}

转载于:https://www.cnblogs.com/chunlinn/p/10517345.html

【算法笔记】B1015 德才论相关推荐

  1. 《算法笔记》中文版 - 包括数组,链表,树,图,递归,DP,有序表等相关数据结构与算法的讲解及代码实现...

    来源:专知本文为资源,建议阅读5分钟本文为你分享<算法笔记>中文版. https://github.com/Dairongpeng/algorithm-note 目录概览 第一节 复杂度. ...

  2. 数据结构与算法笔记 - 绪论

    数据结构与算法笔记 - 绪论 1. 什么是计算 2. 评判DSA优劣的参照(直尺) 3. 度量DSA性能的尺度(刻度) 4. DSA的性能度量的方法 5. DSA性能的设计及其优化 x1. 理论模型与 ...

  3. 数据结构与算法笔记(十六)—— 二叉搜索树

    一.二叉搜索树定义 二叉搜索树(Binary Search Tree),又名二叉排序树(Binary Sort Tree). 二叉搜索树是具有有以下性质的二叉树: 若左子树不为空,则左子树上所有节点的 ...

  4. 数据结构与算法笔记(十五)—— 散列(哈希表)

    一.前沿 1.1.直接寻址表 当关键字的全域U比较小时,直接寻址是一种简单而有效的技术.假设某应用要用到一个动态集合,其中每个元素都有一个取自全域U={0,1,-,m-1)的关键字,此处m是一个不很大 ...

  5. 《algorithm-note》算法笔记中文版正式发布!

    无论是做机器学习.深度学习.自然语言处理还是其它领域,算法的重要性不言而喻!吃透算法底层原理.掌握算法数学推导和代码实现,对提高自己的硬核实力来说非常重要!今天给大家推荐一个超赞的开源算法笔记!中文版 ...

  6. 【算法】《algorithm-note》算法笔记中文版正式发布!

    无论是做机器学习.深度学习.自然语言处理还是其它领域,算法的重要性不言而喻!吃透算法底层原理.掌握算法数学推导和代码实现,对提高自己的硬核实力来说非常重要!今天给大家推荐一个超赞的开源算法笔记!中文版 ...

  7. c++ string 删除字符_算法笔记|(5)第二章C、C++的快速入门字符数组的存放方式string.h文件...

    字符数组的存放方式 由于字符数组是由若干个char类型的元素组成的,因此字符数组的每一位都是一个char字符,除此之外,在一维字符数组或者二维字符数组的第二维的末尾都有一个空字符\0表示存放的字符串的 ...

  8. 算法笔记(JavaScript版)——排序

    算法笔记(JavaScript版)--排序 本文内容根据Rebert Sedgewick和Kevin Wayne的<算法(第四版)>整理,原代码为java语言,自己修改为JavaScrip ...

  9. 三维重建7:Visual SLAM算法笔记

    VSLAM研究了几十年,新的东西不是很多,三维重建的VSLAM方法可以用一篇文章总结一下. 此文是一个好的视觉SLAM综述,对视觉SLAM总结比较全面,是SLAM那本书的很好的补充.介绍了基于滤波器的 ...

  10. 最优化理论与算法笔记

    最优化理论与算法笔记

最新文章

  1. Ubuntu系统下移动宽带自动启用设置
  2. exce中让两列数据一一对应_表格数据对比眼花缭乱、痛苦不堪,找对方法,1秒搞定...
  3. “逃离”单体,GitHub的微服务架构实践
  4. Android—数据持久化、SP源码
  5. 使用uicollectionView时需要注意的问题
  6. matlab乘幂的指数是矩阵,信号与系统MATLAB基本语法.ppt
  7. 乐高小颗粒履带机器人_乐高搭建+乐高编程…快带小朋友来漳州这家培训中心,边玩边学...
  8. Dockerfile制作自定义镜像
  9. 单片机c语言常用的语句有几条,单片机C语言教程-基础语句
  10. raw的服务器镜像是什么系统,如何将Ceph Raw格式镜像转换成Qcow2格式并上传云平台创建云主机...
  11. flac音乐格式怎么转换mp3?
  12. Python ftp 下载AHI数据
  13. SAP FICO 第五节 物料分类账ML配置及应用
  14. Selenium自动化测试工具的介绍与使用
  15. 高质量程序设计指南C++学习总结二
  16. php unhtml包,JavaScript 版本的 PHP serialize/unse_js
  17. 记一次遇到挖矿程序的经历
  18. java如何解析mime编码_javamail中MimeUtility解码繁体字的问题
  19. 华为Ebackup模板部署
  20. Zookeeper C API 官方示例程序

热门文章

  1. 360浏览器没有声音_你用的浏览器好用吗?该国产电脑浏览器,极速、安全,值得使用...
  2. 【C语言】在线OJ题 BC7-BC52-牛客网编程初学者入门训练
  3. keil流水灯c语言程序两个一起亮,Keil单片机点亮一个灯及循环流水灯三种实现方法详解...
  4. java foxpro_java解析FoxPro DBF数据文件
  5. automake生成静态库文件_基于CocoaPods的组件化原理及私有库实践
  6. matlab案例 光学,MATLAB仿真及其在光学课程中的应用.pdf
  7. metasploit mysql_Metasploit渗透测试:选择模块
  8. 搭建视频网站的技术方案
  9. STM32不同型号单片机keil工程移植说明
  10. STM8学习笔记---利用UID码实现开机产生随机数