PAT (Basic Level) Practice 1015(德才论)

1015 德才论【PAT (Basic Level) Practice (中文)】 数据结构与算法/排序/快速排序 阅读详情

 


1.首先总结分数关系:

L 最低录取分 ,H 优先录取分 根据要求可以分为四类:

第一类:德才 > H

第二类:德 > H && 才 < H

第三类:德才 < H && 德 >= 才

第四类:德才 > L

2.因为要有分数的排序,所以可以想到用sort函数,


3.开始我的想法是用一个结构体数组,直接全部排序,但是这个题目里有两个排序条件,一个是德分一个是才分,所以这个种思路是很难排序的,


4.可以创建四个结构体的vector。然后把每一类放到里面进行单独比较

(然后vector里面也可以用结构体里的东西,并且还有很多方便的函数,就比单独使用结构体数组方便,感觉c++就是比c 有很多头文件,可以用很多方便的东西,不用自己写函数)


5.通过第四点就可以将每一类分出来了,下面就是进行排序功能了,sort 函数里面有三个参数

(1)第一个是要排序的数组的起始地址。

(2)第二个是结束的地址(最后一位要排序的地址)

(3)第三个参数是排序的方法,此时默认的排序方法是从小到大排序。可以自己写一个函数,来确定排序的方法

int cmp(student a, student b)
{
    if (a.sum == b.sum)
    {
        if (a.de == b.de)
        {
            return b.id > a.id;
        }
        return a.de > b.de;
    }
    return a.sum > b.sum;
}

最后根据题目要求输出就行

/*
第一类:德才 > H
第二类:德 > H && 才 < H
第三类:德才 < H && 德 > 才
第四类:德才 > L
*/
/*
arr[i].de>=H&&arr[i].cai>=H
arr[i].de>=H&&arr[i].cai<H
*/
#include <iostream>
#include <stdlib.h>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
const int N = 1e5 + 10;
struct student
{
    int id;
    int de, cai;//德,才
    int sum;//总分
} arr;
int cmp(student a, student b)
{
    if (a.sum == b.sum)
    {
        if (a.de == b.de)
        {
            return b.id > a.id;
        }
        return a.de > b.de;
    }
    return a.sum > b.sum;
}
int main()
{
    int n, L, H;
    vector<student> v1, v2, v3, v4;
    cin >> n >> L >> H;
    for (int i = 0; i < n; i++)
    {
        cin >> arr.id >> arr.de >> arr.cai;
        arr.sum = arr.cai + arr.de;
        if (arr.cai >= L && arr.de >= L)
        {
            if (arr.cai >= H && arr.de >= H)
                v1.push_back(arr);
            else if (arr.de >= H && arr.cai < H)
                v2.push_back(arr);
            else if (arr.de < H && arr.cai < H && arr.cai <= arr.de)
                v3.push_back(arr);
            else
                v4.push_back(arr);
        }
    }
    cout << v1.size() + v2.size() + v3.size() + v4.size() << endl;
    sort(v1.begin(), v1.end(), cmp);
    sort(v2.begin(), v2.end(), cmp);
    sort(v3.begin(), v3.end(), cmp);
    sort(v4.begin(), v4.end(), cmp);
    for (int i = 0; i < v1.size(); i++)
        cout << v1[i].id << " " << v1[i].de << " " << v1[i].cai << endl;
    for (int i = 0; i < v2.size(); i++)
        cout << v2[i].id << " " << v2[i].de << " " << v2[i].cai << endl;
    for (int i = 0; i < v3.size(); i++)
        cout << v3[i].id << " " << v3[i].de << " " << v3[i].cai << endl;
    for (int i = 0; i < v4.size(); i++)
        cout << v4[i].id << " " << v4[i].de << " " << v4[i].cai << endl;

    system("pause");
}

菜狗一个,写的简单,希望有人可以交流一下

推荐一下,B站,PTA讲解这位老师讲的挺好的,一般是用STL库里的方法。

【SPSS操作】Non-parametric ANCOVA (Quade‘s) in SPSS 在SPSS中执行Quade的非参数ANCOVA需要手动计算步骤,因为SPSS没有内置的菜单选项。以下是详细的操作指南。 阅读详情

相关推荐

中职网络安全2021年国赛Wireshark流量分析题目解析

中职网络安全Wireshark流量分析题目解析

FRANXX_02的博客 6444

PAT(Basic Level) Practice(中文) 1015

【Basic Level】 *1015 #include <iostream> #include <cmath> #include <string> #include <algorithm> //sort 数组、链表、向量 #include <iomanip> #include <cctype> #include <vector> using namespace std; typedef struct { /* d

weixin_43437884的博客 143

DeepSeek研发的精算大模型「精卫」已实现98%精算任务覆盖,中国人寿采用后年节约3.2亿元技术采购成本,形成关键技术替代效应

根据现有资料,精算领域关键技术替代效应的行业标准定义尚未明确具体提及。然而,可以从相关文献中提取一些关键概念和方法来推导出可能的定义。​替代效应的基本定义​:替代效应是指一种商品价格变动引起另一种商品的相对价格变动,从而导致消费者在维持原有效用水平不变的条件下对商品需求量做出的调整。​技术替代效应​:在精算领域,技术替代效应可以理解为新技术或新方法对现有技术或方法的替代,从而影响精算模型、数据处理和决策过程。例如,机器学习在精算中的应用日益增长,改变了精算师的工作方式和模型构建方法。​。

百态·数智思维 | 聚焦大数据、量化与未来AI 1712

PAT (Basic Level) Practice 1015 德才论

题目详情 (pintia.cn)https://pintia.cn/problem-sets/994805260223102976/problems/994805307551629312 #include <iostream> #include <algorithm> #include <vector> using namespace std; typedef struct student{ int ID, morality, ability; } stud

qq_44190767的博客 174

微信抢红包神器自动抢软件

微信抢红包神器自动抢软件

weixin_44006731的博客 8081

深入解析TMC2209 UART寄存器配置:从基础指令到高级参数调优

本文深入解析TMC2209 UART寄存器配置,从基础指令到高级参数调优,涵盖电流控制、微步细分等关键设置。通过实战案例和优化技巧,帮助开发者高效配置步进电机驱动,提升系统性能和稳定性。特别介绍了UART通信协议和CRC校验实现,确保数据传输可靠性。

tequila的博客 1159

PAT (Basic Level) Practice (中文)1015 德才论 (25 分)

/* 重点: 1.读题先明白需要啥读了一边,你知道是排序题, 而且你还需要一个结构体,所以呢你需要掌握排 序sort的使用(还有cmp(是一个决定如何比较的函数)), 还要掌握如何给结构体中的元素排序,这是重难点。 2.分析题目要求,就是该怎么分类排序 先分类别: 1.德才都超 H 线 >= 按总分排序 2.德到才不到 也按总分排序 3.德才都不到 但德分大于才分 也按总分排序 4.其他到达录取线 也按总分排序 3.机智点:就是他让我们返回那个符合的人数,用 t.

m0_60956441的博客 402

TDSQL-单机安装

根据腾讯云官方要求,TDSQL安装至少需要三台机器。本人想要学习TDSQL但是没有足够的机器资源,经过仔细分析研究TDSQL安装过程,尝试发现单台机器也可以成功安装TDSQL,现将本人单台机器安装TDSQL的过程以及安装过程中遇到的问题在此分享。具体安装过程可参考腾讯官方文档,本文仅分享与官方文档不一致的步骤。

u012607648的博客 6809

PAT (Basic Level) Practice题解 1015 德才论 [C语言实现]

题目 原题链接 思路 基本思路 先按分数分成5类。 ① 才德全尽 ② 德胜才 ③ “才德兼亡”但尚有“德胜才”者 ④ 其余录取者 ⑤ 被淘汰者 按总分排序 总分相同时,按德分排序 德分相同时,按学号先后排序 注意点: 这里需要用到C标准库的函数qsort,也就是快速排序,不然耗时通过不了 qsort函数学习笔记 快速排序数据结构算法 代码 #include <std...

Hollowscripts的博客 369

PX4开发环境搭建(Ubuntu1804+QGC+Qt Creator )

文章目录前言一、安装环境二、PX4环境搭建1. 在虚拟机中安装Ubuntu2. 安装PX4环境(1)下载PX4源码:(2) 安装工具链(3) jMAVSim仿真(4) 编译验证三、安装QGC四、安装Qt Creator 前言 在这之前作者完全没接触过PX4,安装过程遇到了很多坑,而且每安装下载一个东西都要等好久,出现问题又要重新开始,前后折腾了四天才弄好,希望此文对大家有所帮助。 一、安装环境 ...

Beyonderwei的博客 9023

UDPProbe UDP端口存活探测(发送特征包+响应分析)、UDP服务识别

qDebug() << "收到响应:" << ip.toString() << ":" << port << " 服务:" << serviceName << " 响应长度:" << response.size();qDebug() << "开始探测:" << targetIp << ":" << port << " 超时时间:" << timeout << "ms";qInfo() << "\n==================== UDP探测结果 ====================";

寒寒豆豆软件公司的博客 148

1015 德才论 (25 分)

宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。” 现给出一批考生的德才分数,请根据司马光的理论给出录取排名。 输入格式: 输入第一行给出 3 个正整数,分别为:N(≤),即考生总数;L(≥),为录取最低分数线,即德分和才分均不低于L的考生...

245

2025 华为OD机试真题e卷 C语言 实现【竖直四子棋】

竖直四子棋的棋盘是竖立起来的,双方轮流选择棋盘的一列下子,棋子因重力落到棋盘底部或者其他棋子之上,当一列的棋子放满时,无法再在这列上下子。

MISAYAONE的博客 1417

PAT (Basic Level) Practice1015 德才论

1015 德才论 输入格式: 输入第一行给出 3 个正整数,分别为:N,即考生总数;L为录取最低分数线,H为优先录取线。随后 N 行,每行给出一位考生的信息,包括:准考证号 德分 才分,其中准考证号为 8 位整数,德才分为区间 [0, 100] 内的整数。数字间以空格分隔。 输出格式: 输出第一行首先给出达到最低分数线的考生人数 M,随后 M 行,每行按照输入格式输出一位考生的信息,考生按输入中说明的规则从高到低排序。当某类考生中有多人总分相同时,按其德分降序排列;若德分也并列,则按准考证号的升序输出。

PKM of bk 1506

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

PAT (Basic Level) Practice 乙级 1015 德才论

PAT (Basic Level) Practice 乙级 1015 宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。” 现给出一批考生的德才分数,请根据司马光的理论给出录取排名。 输入格式: 输入第一行给出 3 个正整数,分别为:N(≤10000),即考生...

ZQYnn's blog 203

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

PAT (Basic Level) Practice 1015 德才论

                                      1015 德才论 宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。” 现给出一批考生的德才分数,请根据司马光的理论给出录取排名。 输入格式: 输入第一行给出 3 个正整数,分...

Dunk.Wan 192

PAT(Basic level)Practice 1015 德才论 题解

1015 德才论 (25分) 宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。” 现给出一批考生的德才分数,请根据司马光的理论给出录取排名。 输入格式: 输入第一行给出 3 个正整数,分别为:N(≤105)N(≤10^5)N(≤105),即考生总数;L(≥6...

masteren的博客 448

PAT (Basic Level)(二)-- Practice 1015 德才论

这个主要是针对浙大PAT (Basic Level) Practice 1015 德才论题目的思路分析,因为自己的思路算法效率低下,借鉴了其他小伙伴的思路,并优化算法,顺利通过。

CarpeDiem 731

【PAT (Basic Level) Practice】——【排序】1015 德才论

文章目录一【题目难度】二【题目编号】三【题目描述】四【题目示例】五【解题思路】六【最终得分】七【代码实现】八【提交结果】 一【题目难度】 乙级 二【题目编号】 1015 德才论 (25 分) 三【题目描述】 宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。” 现给出一批考生的德才分数,请根据司马光的理论给出录取排名。 四【题目示例】 输入格式: 输入第

IronmanJay 246

PAT (Basic Level) Practice-1015 德才论

宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。” 现给出一批考生的德才分数,请根据司马光的理论给出录取排名。

weixin_53895027的博客 511

1015 德才论[PAT (Basic Level) Practice]

1015 德才论[PAT (Basic Level) Practice] 一道可以用分割区间和区间合并解决的的题,但我没这么做。 学到tuple就用tuple,巧了不是(bushi。

m0_59385870的博客 452

PAT (Basic Level) Practice 1015 德才论 (25 分)

宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。” 现给出一批考生的德才分数,请根据司马光的理论给出录取排名。 输入格式: 输入第一行给出 3 个正整数,分别为:N(≤10​5​​),即考生总数;L(≥60),为录取最低分数线,即德分和才分均不低于 L 的考...

weixin_43387852的博客 239

【Java】PAT(Basic Level) Practice(中文) 1015德才论

提供四种Java解法,用Java解一定会超时。最后提供一种C语言解法,测试通过。

Dr_Cheeze的博客 463
上一篇: PAT (Basic Level) Practice 1011
下一篇: PAT (Basic Level) Practice 1016 部分A+B
Absorbed__
博客等级 码龄5年 182粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值