【洛谷 P1093】[NOIP2007 普及组] 奖学金 题解(结构体排序)

2023-11-02

[NOIP2007 普及组] 奖学金

题目描述

某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前 5 5 5 名学生发奖学金。期末,每个学生都有 3 3 3 门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学 排在前面,这样,每个学生的排序是唯一确定的。

任务:先根据输入的 3 3 3 门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前五名名学生的学号和总分。注意,在前 5 5 5 名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分) 是:

7 7 7 279 279 279
5 5 5 279 279 279

这两行数据的含义是:总分最高的两个同学的学号依次是 7 7 7 号、 5 5 5 号。这两名同学的总分都是 279 279 279 (总分等于输入的语文、数学、英语三科成绩之和) ,但学号为 7 7 7 的学生语文成绩更高一些。如果你的前两名的输出数据是:

5 5 5 279 279 279
7 7 7 279 279 279

则按输出错误处理,不能得分。

输入格式

n + 1 n+1 n+1行。

1 1 1 行为一个正整数 n ( ≤ 300 ) n ( \le 300) n(300),表示该校参加评选的学生人数。

2 2 2 n + 1 n+1 n+1 行,每行有 3 3 3 个用空格隔开的数字,每个数字都在 0 0 0 100 100 100 之间。第 j j j 行的 3 3 3 个数字依次表示学号为 j − 1 j-1 j1 的学生的语文、数学、英语的成绩。每个学生的学号按照输入顺序编号为 1 ∼ n 1\sim n 1n(恰好是输入数据的行号减 1 1 1)。

所给的数据都是正确的,不必检验。

//感谢 黄小U饮品 修正输入格式

输出格式

5 5 5 行,每行是两个用空格隔开的正整数,依次表示前 5 5 5 名学生的学号和总分。

样例 #1

样例输入 #1

6
90 67 80
87 66 91
78 89 91
88 99 77
67 89 64
78 89 98

样例输出 #1

6 265
4 264
3 258
2 244
1 237

样例 #2

样例输入 #2

8
80 89 89
88 98 78
90 67 80
87 66 91
78 89 91
88 99 77
67 89 64
78 89 98

样例输出 #2

8 265
2 264
6 264
1 258
5 258

思路

给sort函数传入自定义比较器,对结构体进行排序。

AC代码

#include <iostream>
#include <algorithm>
#define AUTHOR "HEX9CF"
using namespace std;

const int maxn = 100005;

struct S {
    int j;
    int sum;
    int chs;
}score[maxn];

bool cmp(struct S x, struct S y){
    if(x.sum == y.sum) {
        if(x.chs == y.chs){
            return x.j < y.j;
        }
        return x.chs > y.chs;
    }
    return x.sum > y.sum;
}

int main() {
    int n;
    cin >> n;
    for(int i = 0; i < n; i++){
        int c, m, e;
        cin >> c >> m >> e;
        score[i].j = i + 1;
        score[i].chs = c;
        score[i].sum = c + m + e;
    }
    sort(score, score + n, cmp);
    for(int i = 0; i < 5; i++){
        cout << score[i].j << " " << score[i].sum << endl;
    }
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【洛谷 P1093】[NOIP2007 普及组] 奖学金 题解(结构体排序) 的相关文章

  • 您可以从基本 Win32 控制台模板应用程序中的 C#/Winrt 组件调用(不是 WinForm/abstractions/wrappers 或使用 C++/Winrt 模板)吗?)

    我有一个现有的程序 win32 x86 控制台应用程序 需要调用托管代码 来自 Net 的 C dll The dll不暴露给 COM 但可以从 C WinRT 组件调用并由 C WinRT 控制台模板应用引用 BUT即使安装了 C Win
  • 单元测试验证失败

    我正在运行我的单元测试PostMyModel路线 然而 在PostMyModel 我用的是线Validate
  • 删除是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 C 编程 free 如何知道要释放多少 https stackoverflow com questions 1518711 c programming how does free know how m
  • linq 中使用字符串数组 c# 的 'orderby'

    假设我有一个这样的方法定义 public CustomerOrderData GetCustomerOrderData string CustomerIDs var query from a in db Customer join b in
  • 在 C# 中调用 C++ 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有很多用 C 编写的库 我想从 C 调用这些库 但是 我遇到了很多问题 我想知道是否有书籍或指南告诉我如何做到这一点 Dll导入 htt
  • Gwan C#,如何获取HTTP标头?

    我需要它来重写 url 以了解我正在处理哪个友好的 url 用于用户代理和其他东西 EDIT public class Gwan MethodImplAttribute MethodImplOptions InternalCall exte
  • 如何制作可启动程序?

    所以 这个问题可能看起来很奇怪 但假设我编译了 int main void int x 3 int y 4 int z x y 是否可以让CPU这样运行 如何 例如 这允许我写入监视器吗 如果我没记错的话 内存中有些地方可以写入要显示的内容
  • 将接口转换为其具体实现对象,反之亦然?

    在 C 中 当我有一个接口和几个具体实现时 我可以将接口强制转换为具体类型 还是将具体类型强制转换为接口 这种情况下的规则是什么 Java 和 C 中都允许这两个方向 向下转型需要显式转型 如果对象类型不正确 可能会抛出异常 然而 向上转换
  • 如何在三个 IEnumerable 上使用 Zip [重复]

    这个问题在这里已经有答案了 可能的重复 使用 Linq 从 3 个集合创建项目 https stackoverflow com questions 5284315 create items from 3 collections using
  • 使用具有抗锯齿功能的 C# 更改抗锯齿图像的背景颜色

    我有一个图像需要更改背景颜色 例如 将下面示例图像的背景更改为蓝色 然而 图像是抗锯齿的 所以我不能简单地用不同的颜色替换背景颜色 我尝试过的一种方法是创建第二个图像 仅作为背景 并更改其颜色并将两个图像合并为一个图像 但是这不起作用 因为
  • 引用/指针失效到底是什么?

    我找不到任何定义指针 引用无效在标准中 我问这个问题是因为我刚刚发现 C 11 禁止字符串的写时复制 COW 据我了解 如果应用了 COW 那么p仍然是一个有效的指针并且r以下命令后的有效参考 std string s abc std st
  • 如何使用 NPOI 按地址(A1、A2)获取 Excel 单元格值

    我有一个 Excel 单元格地址 例如 A1 A2 如何使用 C 中的 NPOI 框架以编程方式访问此单元格 我找到的一些 Java POI 示例代码 CellReference cr new CellReference A1 row my
  • 从BackgroundWorker线程更新图像UI属性

    在我正在编写的 WPF 应用程序中 我有一个 TransformedBitmap 属性 该属性绑定到 UI 上的 Image 对象 每当我更改此属性时 图像就会更新 因此显示在屏幕上的图像也会更新 为了防止在检索下一张图像时 UI 冻结或变
  • Project Euler #8,我不明白我哪里出了问题[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在做项目欧拉第八题 https projecteuler net problem 8 其中我得到了这个大得离谱的数字 7316
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • 逆向工程 ASP.NET Web 应用程序

    我有一个 ASP NET Web 应用程序 我没有源代码 该 bin 包含 10 个程序集和一个 compiled 文件 我在 App Code dll 上使用 Reflector 它向我显示了类和命名空间之类的东西 但它太混乱了 有没有什
  • 如何停止无限循环?

    我正在编写一个程序 该程序将计算三角形或正方形的面积 然后提示用户是否希望计算另一个 我的代码已经运行到可以计算任一形状的面积的程度 但随后不再继续执行代码的其余部分 例如 如果选择了正方形 则计算面积 然后返回到正方形边长的提示 我假设这
  • 如何调试 .NET 运行时中的内部错误?

    我正在尝试调试一些处理大文件的工作 代码本身works 但 NET 运行时本身会报告零星错误 对于上下文 这里的处理是一个 1 5GB 文件 仅加载到内存中一次 在循环中处理和释放 故意尝试重现此否则不可预测的错误 我的测试片段基本上是 t
  • LINQ 中的“from..where”或“FirstOrDefault”

    传统上 当我尝试从数据库中获取用户的数据时 我使用了以下方法 在某种程度上 DbUsers curUser context DbUsers FirstOrDefault x gt x u LoginName id string name c
  • 结构化绑定的用例有哪些?

    C 17 标准引入了新的结构化绑定 http en cppreference com w cpp language structured binding功能 最初是proposed http www open std org jtc1 sc

随机推荐

  • STM32F103学习笔记(六

    实验六 七 独立和窗口看门狗实验 看门狗 单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环 看门狗电路就是为了避免这种情况的发生 看门狗的作用就是在一定时间内 通过定时计数器实现 没有接收喂狗信号 表示 MCU 已经挂了 便实现处
  • js基础篇

    JavaScript语法 字面量 也叫直接量 就是程序中直接使用的 是变量后面的值 变量就是声明一个未知可变的量 变量声明符合unicode编码所有变量符合utf 8的编码都可以 标识符命名标准 1 必须是字母 数字 开头 2 以驼峰命名规
  • 手把手教你实操部署FISCO BCOS联盟链(附每一步代码)

    感谢FISCO BCOS社区贡献者 刘海锋 贡献此文 贡献无大小 分享永留传 谢谢你们的每一次贡献 最后 如果你也想成为Mr FISCO BCOS 一起干出点改变世界 到老了可以跟孙辈们吹吹牛的事 欢迎加入社区 经过尝试 我按以下操作顺序执
  • Spring框架远程命令执行复现(CVE-2022-22965)

    2022年3月30日 Spring框架曝出RCE 0day漏洞 国家信息安全漏洞共享平台 CNVD 已收录了Spring框架远程命令执行漏洞 CNVD 2022 23942 考虑到Spring框架的广泛应用 漏洞被评级为危险 通过该漏洞可写
  • 压测工具:jmeter

    衡量当前系统应对高并发的量 压测工具不能少 1 下载jmeter 进入官网 2 使用jmeter 进入bin目录 或者双击 2 1 添加测试计划 线程组的基本属性 2 2取样器 取样器是我们真正进行测试的内容 比如http ftp jdbc
  • 【项目经验】elementui--table表格自定义表头及bug

    一 思路 首先我们肯定得循环表头 我们原生js封装的表格的实现原理就是这样 其次我们要把自己循环的label显示出来 对应的prop也要和表格数据相对应 用div标签循环都会出现错误 div里面套column 大家不要踩坑 第一项会跑到最后
  • 23个可以免费学习编程的网站

    英文 https medium com javascript in plain english 22 ways to learn coding for free in 2021 87a9c171132c 翻译 web前端开发公众号 ID w
  • Vue2.0选中当前鼠标移入移除加样式

    本人写的小程序 功能还在完善中 欢迎扫一扫提出宝贵意见 效果如gif动态图所示 1 通过v for遍历数组 HTML代码 1
  • 基于亚博K210开发板——串口中断以及开启双核任务

    文章目录 开发板 实验目的 实验准备 硬件原理图 软件对应SDK 对应的头文件 uart h uart h接口函数 高速通用异步收发传输器 UARTHS 对应的头文件 uarths h uarths h接口函数 板级对应的头文件 bsp h
  • C++之xlsx文件操作之写操作

    采用xlsxwriter开源库的实现 声明如下 include xlsxwriter include xmlwriter h include xlsxwriter include workbook h include xlsxwriter
  • 微信小程序 返回上一页面时实现上一页面刷新

    假如从页面B返回页面A时实现页面A刷新 页面B var pages getCurrentPages 当前页面栈 if pages length gt 1 var beforePage pages pages length 2 获取上一个页面
  • vite+electron构建桌面版应用教程超简单

    目录 概述 快速开始 目录结构 Electron Vite Vue 整合模板 结构简单 容易上手 概述 开箱即用 支持 C C 模块 支持在渲染进程中使用 Electron Node js API 结构清晰 可塑性强 很容易实现多窗口 快速
  • Java assert断言

    格式 assert 返回boolean的语句 方法 如果boolean为true 程序继续执行 否则抛出AssertionError 继承于Error而非Exception 表达系统级运行错误 终止程序 因此assert可以定位bug as
  • MySql学习笔记——负载均衡(二十三)

    load balance 当存在多台服务器提供一个任务时 需要从其中选择一台用来完成当前任务 选择的算法就是负载均衡 在mysql中往往会采用一写多读架构 因为一般读操作往往多余写操作 还有就是写操作的同步是个问题 一写多读中 读服务器需要
  • CP343-1 扩展ProfibusCPU 314C-2DP

    1 MPI编程电缆连接PLC 设置接口为PC Adapter MPI 1 如下图所示 2 硬件组态插入组态 建立ethernet 网络 编译后下载 3 CP343 1安装上后 CPU run不起来 组态更新后即可 转载于 https www
  • [OVD]Open-Vocabulary Object Detection Using Captions(CVPR. 2021 oral)

    1 Motivation Despite the remarkable accuracy of deep neural networks in object detection they are costly to train and sc
  • Llama2-Chinese项目:1-项目介绍和模型推理

    Atom 7B与Llama2间的关系 Atom 7B是基于Llama2进行中文预训练的开源大模型 为什么叫原子呢 因为原子生万物 Llama中文社区希望原子大模型未来可以成为构建AI世界的基础单位 目前社区发布了6个模型 如下所示 Flag
  • JS声明对象key为变量

    JS声明对象key为变量 给对象的键加方括号即可 如下 const roomName room roomName const roomDetail roomName roomDescription
  • 伪类和伪元素的区别是什么?

    一 两者的定义 1 伪类 pseudo class 是一个以冒号作为前缀 被添加到一个选择器末尾的关键字 当你希望样式在特定状态才被呈现到指定的元素时 你可以往元素的选择器后面加上对应的伪类 2 伪元素用于创建一些不在文档树中的元素 并为其
  • 【洛谷 P1093】[NOIP2007 普及组] 奖学金 题解(结构体排序)

    NOIP2007 普及组 奖学金 题目描述 某小学最近得到了一笔赞助 打算拿出其中一部分为学习成绩优秀的前 5 5 5 名学生发奖学金 期末 每个学生都有 3 3 3 门课的成绩 语文 数学 英语 先按总分从高到低排序 如果两个同学总分相同