德才论

news2024/11/15 19:29:48

目录

1015:德才论

输入格式:

输出格式:

输入样例:

输出样例:

思路:

  1.技巧:

  1.2结构体代码:

  2.分类:

    1.德才分类

     1.2德才分类代码:

     2.cmp函数

     2.1 cmp函数代码:

     3.超时问题(易错,算法要优化)

总代码:

时间复杂度:

总结:

题目链接:


1015:德才论

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

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

输入格式:

输入第一行给出 3 个正整数,分别为:N(≤105),即考生总数;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

代码长度限制:

16 KB

时间限制:

400 ms

内存限制:         

64 MB

思路:

  1.技巧:

  用结构体来表示学生,数组存每一个学生的信息,用algorithm库的sort来进行排序。 

  1.2结构体代码:

struct student{
    char id[20];
    int de,cai,tag;//用来记录学生等级,1~4是及格,5是不及格 
}a[100001];

  2.分类:

将学生成绩进行分类(4类) ,每个类使用vector进行储存。

    1.德才分类

     ⑤低于最低线:德<l  才<l

     ①才德全尽:德>H  才>H

     ②德胜才:德>=才

     ③才德兼亡&&德胜才:德>=才>L,这一部分容易错,题目中定义德分不低于才分便是德胜才,因此要有等号。

     ④其他             德>L 才>L

     1.2德才分类代码:

    for(int i=0;i<N;i++){//读取学生信息 
        scanf("%s %d %d",a[i].id ,&a[i].de ,&a[i].cai );
/*5类*/  if(a[i].de <L||a[i].cai <L){
//如果德与才均低于及格线,让及格人数减少1 ,并且给当前学生上标签5 
            M--;
            a[i].tag =5;
        }
/*1类*/  else if(a[i].de>=H&&a[i].cai >=H) a[i].tag =1;
//有了第一条判断语句的存在,默认两个都是及格的 
/*2类*/  else if(a[i].cai <H&&a[i].de >=H) a[i].tag =2;
/*3类*/  else if(a[i].cai <H&&a[i].de <H&&a[i].de >=a[i].cai ) a[i].tag =3;
/*4类*/  else a[i].tag =4; 
    }

     2.cmp函数

   1.sort函数范围限定成M,导致并不是所有人参加了排序

   2.第三类人的判断:德胜才也包含德=才,更改之后通过测试点2、3、4

     2.1 cmp函数代码:

bool cmp(student a,student b){
    if(a.tag !=b.tag ) return a.tag <=b.tag ;//同类
    else if((a.cai +a.de )!=(b.de +b.cai )) return (a.cai +a.de )>=(b.de +b.cai );
    else if(a.de!=b.de ) return a.de >b.de ;
    else return strcmp(a.id ,b.id )<=0;
}

     3.超时问题(易错,算法要优化)

        使用cstdio里的scanf和printf替换c++的cin,cout即可。 

总代码:

//很明显这道题需要给每个学生分等级,利用等级在cmp函数里面进行排序判断 
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
using namespace std;

struct student{
    char id[20];
    int de,cai,tag;//用来记录学生等级,1~4是及格,5是不及格 
}a[100001];

bool cmp(student a,student b){
    if(a.tag !=b.tag ) return a.tag <=b.tag ;//同类
    else if((a.cai +a.de )!=(b.de +b.cai )) return (a.cai +a.de )>=(b.de +b.cai );
    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,M;
    //N个学生
    //L是及格线
    //H是正常线 
    scanf("%d %d %d",&N,&L,&H);//读取前三个关键数据 
    M=N;//先让及格的人数为M后面利用判断递减 
//--------------------------------------------------------------
//说明:这题有很多包含与不包含的关系,很容易弄错,
//只要当包含逻辑完美并且想的通的时候才能保证写的代码是正确的 
//很重要的思路就是找到 "同" ,然后加上"不"字,去找补集,直到找全为止 !
//并且要绘制横向树状图, 按照"分支少的放在上面的原则"去写,最后的那个分支利用else来写 
//--------------------------------------------------------------
    for(int i=0;i<N;i++){//读取学生信息 
        scanf("%s %d %d",a[i].id ,&a[i].de ,&a[i].cai );
/*5类*/  if(a[i].de <L||a[i].cai <L){
//如果德与才均低于及格线,让及格人数减少1 ,并且给当前学生上标签5 
            M--;
            a[i].tag =5;
        }
/*1类*/  else if(a[i].de>=H&&a[i].cai >=H) a[i].tag =1;
//有了第一条判断语句的存在,默认两个都是及格的 
/*2类*/  else if(a[i].cai <H&&a[i].de >=H) a[i].tag =2;
/*3类*/  else if(a[i].cai <H&&a[i].de <H&&a[i].de >=a[i].cai ) a[i].tag =3;
/*4类*/  else a[i].tag =4; 
    }
    sort(a,a+N,cmp);//利用上面写的规则进行排序 
    printf("%d\n",M);// 输出及格人数 
    for(int i=0;i<M;i++){
        printf("%s %d %d\n",a[i].id ,a[i].de ,a[i].cai );
    }
    return 0;
}

时间复杂度:

  进行了一次系统函数sort的排序,由于其原理是冒泡排序,所以最大时间复杂度是O(N^2);

总结:

  这道题算是初级算法中间最难的了,考了学生们结构体的构造,结构体的排序,结构体的分类,排序规则的多重定义,时间复杂度的些许优化!

题目链接:

PTA | 程序设计类实验辅助教学平台千名教师建设,万道高质量题目,百万用户拼题的程序设计实验辅助教学平台https://pintia.cn/problem-sets/994805260223102976/exam/problems/994805307551629312

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/83478.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

神经网络优化

提升深度神经网络&#xff1a;超参数调节&#xff0c;正则化&#xff0c;优化 之前已经学习了如何构建神经网络&#xff0c;本章将继续学习如何有效运行神经网络&#xff0c;内容涉及超参数调优&#xff0c;如何构建数据以及如何确保优化算法快速运行&#xff0c;从而使学习算…

LVM卷在线扩容报错:resize would cause inodes_count overflow

一、问题描述 某次在线环境&#xff0c;存储使用率告警在线扩容时&#xff0c;文件系统扩容失败&#xff0c;报错如下&#xff1a; Size of logical volume sihua/video changed from <162.00 TiB (42467321 extents) to <258.00 TiB (67633142 extents).Logical volu…

[附源码]计算机毕业设计付费自习室管理小程序Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

【JDBC上篇】什么是JDBC

文章目录1、对JDBC本质的理解2、代码模拟JDBC的本质3、JDBC编程的六步4、通过类加载的方式注册驱动5、属性配置文件与JDBC6、处理查询结果集1、对JDBC本质的理解 Java DataBase Connectivity&#xff08;Java语言连接数据库&#xff09;&#xff0c;其本质是SUN公司指定的一套…

CSP22.3 T4通信系统管理

之前在CCF CSP认证2022年3月完整题解这篇博客记录了自己花了两天时间乱搞出来的方法&#xff0c;但是实际上动态维护区间最值&#xff0c;通过setsetset实现会更简洁&#xff0c;用优先队列需要额外开数组记录堆中节点的有效性。 而且在处理额度失效上&#xff0c;我也使用了最…

教你用响应式建站平台搭建网站

响应式网站搭建大家知道是什么吗&#xff1f;我们可以经常听到PC端网站、移动端网站&#xff0c;这些就是为特定终端而制作的网站版本&#xff0c;而响应式网站就是一个网站能够兼容多个终端&#xff0c;而不是为每个终端做一个特定的版本。那么我们怎么用响应式建站平台搭建网…

基于极限学习机(ELM)进行多变量用电量预测(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f389;作者研究&#xff1a;&#x1f3c5;&#x1f3c5;&#x1f3c5;本科计算机专业&#xff0c;研究生电气学硕…

使用adb命令导出hprof文件

我们可以使用android studio profiler导入hprof文件分析android应用的内存问题。那么如何从手机上面导出这份文件呢&#xff1f; 把应用的heap 区的数据取出来保存在一个hprof文件上&#xff0c;然后把hprof文件导入到可以查看这个文件的工具上&#xff08;如android studio p…

Spring Security总结

目录 介绍 项目搭建 Security认证 UserDetailsService 内存认证 数据库认证 PasswordEncoder密码解析器 自定义登录页面 退出登录 CSRF防护 Remember me Security授权 RBAC 权限表设计 查询访问权限 配置类设置访问权限 自定义访问控制逻辑 注解设置访问权限 Secured Pre…

29.前端笔记-HTML-Html5的新特性

目录1、HtML5新增的语义化标签2、HTML5新增的多媒体标签&#xff08;1&#xff09;音频标签&#xff1a;< audio>audio的常见属性&#xff08;2&#xff09;视频标签&#xff1a;< video>video常见属性3、新增表单元素input的类型type4、新增表单属性1、HtML5新增的…

R语言中的生存分析Survival analysis晚期肺癌患者4例

第1部分&#xff1a;生存分析简介 最近我们被客户要求撰写关于生存分析的研究报告&#xff0c;包括一些图形和统计输出。本演示文稿将介绍生存分析 &#xff0c;参考&#xff1a; Clark, T., Bradburn, M., Love, S., & Altman, D. (2003). Survival analysis part I: Ba…

06 数学软件与建模---拟合

一、知识储备 1.曲线拟合问题的提法 已知一组&#xff08;二维&#xff09;数据&#xff0c;即平面上 n个点&#xff08;xi,yi) i1,…,n, 寻求一个函数&#xff08;曲线&#xff09;yf(x), 使 f(x) 在某种准则下与所有数据点最为接近&#xff0c;即曲线拟合得最好&#xff0…

前后端分离项目-Springboot 【后端框架搭建,SSM】

1.创建新项目 点击File->New->Project 选择Spring Initializr 填写信息 修改Group修改Artifact修改管理类型Maven&#xff08;带有文件目录&#xff09;修改Java version 选择依赖 这里只需要选择Web->Spring Web即可 创建的文件目录如下 2.创建文件目录 controlle…

【深入浅出Spring原理及实战】「原理分析专题」从零开始教你SpringEL表达式使用和功能分析讲解指南(上篇)

Spring EL表达式语言,这种语言jsp中学到的el,但是在整个spring之中其表达式语言要更加的复杂,而且支持度更加的广泛,最重要的是他可以进行方法的调用,对象的实例化,集合操作等等,但是唯一的难点就是:代码太复杂了,表达式太复杂了。深刻领会,spring中针对于字符串的改进,程序员使…

基于jsp+mysql+ssm医院出车管理与绩效分配系统-计算机毕业设计

项目介绍 本毕业设计主要实现集人性化、高效率、便捷等优点于一身的出车管理系统与绩效分配系统&#xff0c;完成系统用户管理、车辆信息管理、调度员信息管理、驾驶员信息管理、救护员信息管理、科室人员管理、院领导信息管理、调度信息管理、出车统计等功能模块。系统通过浏…

Spring Cloud微服务之loadbalancer负载平衡

Spring Cloud微服务之loadbalancer负载平衡 小学时候&#xff0c;曾经做过这样的数学题。 说有一个水池子&#xff0c;上面有一个排水管&#xff0c;下面有一个进水管&#xff0c;开一个进水管&#xff0c;6个小时灌满水池&#xff0c;开一个排水管&#xff0c;10个小时放光整…

给博客网站添加loading加载中动画代码

只需添加几行代码&#xff0c;就可以加强浏览者的体验,不在等待页面加载时感到枯燥&#xff0c;从而关闭网页&#xff0c;很多网站都会制作一个“网页正在加载中”的提示效果或显示加载进程&#xff0c;加载完成后提示消失&#xff0c;大部分都应用在网站的首页。当然网上很多教…

02时间复杂度与空间复杂度

开始系统学习算法啦&#xff01;为后面力扣和蓝桥杯的刷题做准备&#xff01;这个专栏将记录自己学习算法是的笔记&#xff0c;包括概念&#xff0c;算法运行过程&#xff0c;以及代码实现&#xff0c;希望能给大家带来帮助&#xff0c;感兴趣的小伙伴欢迎评论区留言或者私信博…

如何将多个视频剪辑到一起?如何把两段视频合成一段

如何将多个视频剪辑到一起&#xff1f;那么如何拼接视频&#xff1f;接下来小编就带大家一起了解下有关视频拼接的几款工具推荐。 工具一&#xff1a;TS视频拼合工具 TS视频合并工具是一款轻便简单的视频合并工具&#xff0c;主要是用于合并TS视频文件的工具&#xff0c;当用…

【分享】本地js文件替换源网页js文件的方法

本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!本地js文件替换源网页js文件的方法 环境 win10Fiddlerchrome方法一:Fiddler抓包替换js文件 自动回复器–…