P1068 [NOIP2009 普及组] 分数线划定

news/2025/2/23 3:39:51/

题目描述

世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的 150 % 150\% 150% 划定,即如果计划录取 m m m 名志愿者,则面试分数线为排名第 m × 150 % m \times 150\% m×150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。

现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。

输入格式

第一行,两个整数 n , m ( 5 ≤ n ≤ 5000 , 3 ≤ m ≤ n ) n,m(5 \leq n \leq 5000,3 \leq m \leq n) n,m(5n5000,3mn),中间用一个空格隔开,其中 n n n 表示报名参加笔试的选手总数, m m m 表示计划录取的志愿者人数。输入数据保证 m × 150 % m \times 150\% m×150% 向下取整后小于等于 n n n

第二行到第 n + 1 n+1 n+1 行,每行包括两个整数,中间用一个空格隔开,分别是选手的报名号 k ( 1000 ≤ k ≤ 9999 ) k(1000 \leq k \leq 9999) k(1000k9999)和该选手的笔试成绩 s ( 1 ≤ s ≤ 100 ) s(1 \leq s \leq 100) s(1s100)。数据保证选手的报名号各不相同。

输出格式

第一行,有 2 2 2 个整数,用一个空格隔开,第一个整数表示面试分数线;第二个整数为进入面试的选手的实际人数。

从第二行开始,每行包含 2 2 2 个整数,中间用一个空格隔开,分别表示进入面试的选手的报名号和笔试成绩,按照笔试成绩从高到低输出,如果成绩相同,则按报名号由小到大的顺序输出。

样例 #1

样例输入 #1

6 3 
1000 90 
3239 88 
2390 95 
7231 84 
1005 95 
1001 88

样例输出 #1

88 5 
1005 95 
2390 95 
1000 90 
1001 88 
3239 88

提示

【样例说明】

m × 150 % = 3 × 150 % = 4.5 m \times 150\% = 3 \times150\% = 4.5 m×150%=3×150%=4.5,向下取整后为 4 4 4。保证 4 4 4 个人进入面试的分数线为 88 88 88,但因为 88 88 88 有重分,所以所有成绩大于等于 88 88 88 的选手都可以进入面试,故最终有 5 5 5 个人进入面试。

NOIP 2009 普及组 第二题

1.题目分析

输入志愿者人数和计划录取人数,
实际录取人数是计划录取人数的1.5倍后向下取整。

先将志愿者按照笔试成绩降序排序,如果笔试成绩相同则按照报名号升序排序。

最后输出录取分数线,实际录取人数以及所有录取志愿者的信息。

2.题目思路

  1. 创建一个结构体存储志愿者信息:报名号和笔试成绩
  2. 键入数据:参加笔试的人数,计划录取的人数。
  3. 键入参赛的每一个人的信息
  4. 按笔试成绩对人员进行排序(这里采用的是冒泡排序)
  5. 若成绩相同,按照报名号升序排序。
  6. 计算录取位次
  7. 根据录取位次计算录取分数
  8. 统计通过录取分数的志愿者人数
  9. 打印录取分数和录取人数
  10. 打印录取名单

3.代码实现

#include <iostream>
#include <math.h>using namespace std;
//选手信息
typedef struct data {//报名号int reg;//笔试成绩int grade;
} volunteer;int main() {//参加笔试的人数,计划录取的人数int n, m;cin >> n >> m;volunteer vols[n];for (int i = 0; i < n; ++i) {cin >> vols[i].reg >> vols[i].grade;}//按笔试成绩对人员进行排序for (int i = 0; i < n; ++i) {for (int j = 0; j < n - i - 1; ++j) {if (vols[j].grade < vols[j + 1].grade) {volunteer temp = vols[j];vols[j] = vols[j + 1];vols[j + 1] = temp;} else if (vols[j].grade == vols[j + 1].grade) {//成绩相同,按照报名号升序排序if (vols[j].reg > vols[j + 1].reg) {volunteer temp = vols[j];vols[j] = vols[j + 1];vols[j + 1] = temp;}}}}//计算录取位次m = floor(m * 1.5);//计算录取分数int pass = vols[m-1].grade;int cnt = 0;//统计通过录取分数的志愿者人数for (int i = 0; i < n; ++i) {if (vols[i].grade >= pass) {cnt++;}}cout << pass << " " << cnt << endl;//打印录取名单for (int i = 0; i < cnt; ++i) {cout << vols[i].reg << " " << vols[i].grade << endl;}return 0;
}

http://www.ppmy.cn/news/1092663.html

相关文章

Jmeter性能测试手册

目录 目录 2 简介... 4JMeter与LoadRunner区别... 4环境配置... 5 3.1 安装JDK. 5 3.2 配置JDK环境变量... 9 3.3 安装并配置Maven. 13 3.4 下载JMeter 15 JMeter分类使用... 16 4.1 对于Dubbo类接口的测试.. 16 4.1.1 安装开发工具IDEA. 16 4.1.2 配置字符集格式…

Java之包装类的详细解析

包装类 5.1 概述 Java提供了两个类型系统&#xff0c;基本类型与引用类型&#xff0c;使用基本类型在于效率&#xff0c;然而很多情况&#xff0c;会创建对象使用&#xff0c;因为对象可以做更多的功能&#xff0c;如果想要我们的基本类型像对象一样操作&#xff0c;就可以使…

webhook--详解(gitee 推送)

一、简介 webhook 是一种基于 HTTP 的回调函数&#xff0c;可在 2 个应用编程接口&#xff08;API&#xff09;之间实现轻量级的事件驱动通信。是一种新型的前后端交互方式&#xff0c;一种对客户端-服务器模式的逆转&#xff0c;在传统方法中&#xff0c;客户端从服务器请求数…

go语言基本操作--四

面向对象编程 对于面向对象编程的支持go语言设计得非常简洁而优雅。因为&#xff0c;Go语言并没有沿袭面向对象编程中诸多概念&#xff0c;比如继承(不支持继承&#xff0c;尽管匿名字段的内存布局和行为类似继承&#xff0c;但它并不是继承)、虚函数、构造函数和析构函数、隐…

Android图形-Hardware Composer HAL

目录 一、引言 二、概览 三、实现HWC 3.1 为什么是HWC&#xff1f; 3.2 HWC的支持需求 3.3 HWC的实现思路 3.4 HWC的基元 3.5 HIDL接口 3.6 函数指针 3.7 图层和屏幕句柄 3.8 屏幕合成操作 3.9 多个屏幕 3.10 虚拟屏幕合成 3.10.1 模式 3.10.2 输出格式 3.11 同…

鼠标知识系列之星闪鼠标

随着 2023.8.4 华为 HDC 大会的落幕&#xff0c;一个新的名词开始进入了人们的视线&#xff1a;星闪 NaerLink&#xff0c;随着星闪技术引入键鼠圈子的还有一个名词&#xff1a;星闪鼠标。 正如我们之前鼠标知识分享系列提到过的&#xff0c;目前市面上的鼠标主要是有线鼠标和…

掌握 Android 自动化测试框架 UiAutomator UiAutomator2

掌握 Android 自动化测试框架 UiAutomator & UiAutomator2 一、UiAutomator 简介二、UiAutomator2 的诞生三、UiAutomator2 的应用实践总结你是否曾经在进行 Android 应用开发时,对于如何进行全面、有效的自动化测试感到困惑?你是否想要更高效地进行 UI 测试,而不是一遍…

Ansible-roles学习

目录 一.roles角色介绍二.示例一.安装httpd服务 一.roles角色介绍 roles能够根据层次型结构自动装载变量文件&#xff0c;tasks以及handlers登。要使用roles只需在playbook中使用include指令即可。roles就是通过分别将变量&#xff0c;文件&#xff0c;任务&#xff0c;模块以…