当前位置: 首页 > news >正文

【2024年莆田市校园创客节(小学组)初赛】期中考试

期中考试

题目描述

问题描述

班级有 a 名学生,b 门课程。已知每门课程的满分人数,求班上至少有多少人所有课程都考到满分(全满分人数最小值)。若不可能存在全满分学生,输出 0。

输入格式

  • 第一行:两个正整数 a(学生总数)和 b(课程数量);
  • 接下来 b 行:每行一个整数 s_i(第 i 门课程的满分人数)。

输出格式

一个整数,表示最少全满分人数。

样例输入输出

样例输入 1
40 5
33
36
30
28
39
样例输出 1
6
样例输入 2
55 3
16
30
25
样例输出 2
0

数据范围

  • 30% 数据:b = 2
  • 100% 数据:5 ≤ a ≤ 500001 < b ≤ a/20 ≤ s_i ≤ a

解题思路

核心思想:贪心推导公式

要找最少全满分人数,核心是让非全满分学生尽可能多分担各课程满分名额,从而减少全满分人数。

公式推导关键步骤
  1. 设全满分人数为 x,则每门课程剩余满分名额为 s_i - x(由非全满分学生承担);
  2. 非全满分学生共 a - x 人,每人最多在 b-1 门课程得满分(否则就是全满分),最多能承担 (a - x) * (b - 1) 个满分名额;
  3. 所有课程剩余满分名额总和 ≤ 非全满分学生最大承担量,化简后得到:
    x ≥ 所有课程满分人数总和 - (b-1)*a
  4. 人数不能为负,最终答案为 max(总和 - (b-1)*a, 0)

代码实现(一维数组版)

#include <iostream>
#include <algorithm>  // 用于 max 函数
using namespace std;int main() {int a, b;cin >> a >> b;// 一维数组存储每门课程满分人数,b最大为25000(a<=5e4,b<=a/2),数组足够大int s[25005];int sum = 0;// 读取每门课程满分人数,累加总和for (int i = 0; i < b; i++) {cin >> s[i];sum += s[i];}// 核心公式计算,结果取非负int res = sum - (b - 1) * a;cout << max(res, 0) << endl;return 0;
}

代码解释

变量说明

  • a:学生总数,b:课程数量;
  • s[25005]:一维数组,存储每门课程的满分人数(数组大小 25005 适配 b<=a/2a<=5e4 的最大情况);
  • sum:所有课程满分人数的总和;
  • res:通过核心公式计算的最少全满分人数,最终用 max(res, 0) 确保结果非负。

核心逻辑

  1. 输入读取:先读 ab,再用循环读 b 个满分人数存入数组,同时累加总和;
  2. 公式计算:直接代入推导公式 sum - (b-1)*a
  3. 结果修正:避免人数为负,用 max 函数取计算结果和 0 的较大值。

复杂度分析

  • 时间复杂度:O(b),仅遍历 b 次读取数据,效率极高;
  • 空间复杂度:O(b),一维数组存储 b 个满分人数,空间占用极小。

测试用例验证

样例输入 1 验证

  • a=40b=5,数组 s = [33,36,30,28,39],总和 sum=166
  • 计算:166 - 4*40 = 6,输出 6,与样例一致。

样例输入 2 验证

  • a=55b=3,数组 s = [16,30,25],总和 sum=71
  • 计算:71 - 2*55 = -39,输出 0,与样例一致。

注意事项

  1. 数组大小:题目中 b<=a/2a<=5e4,所以 b 最大为 25000,数组设为 25005 足够,避免越界;
  2. 数据溢出:(b-1)*a 最大约 25000*50000=1.25e9,int 类型(4字节)可容纳,无需担心溢出;
http://www.dtcms.com/a/611432.html

相关文章:

  • 【Java架构基础】DO、DTO、VO 都是干什么的?
  • 安装pandas报错No module named ‘encodings‘根本处理办法
  • 应届生招聘去哪个网站wordpress带投稿模板
  • 哪个公司的网站做的好秦皇岛网站制作的流程
  • 阳泉做网站多少钱wordpress move导入
  • 响应式网站下载网站上怎么做弹目提醒
  • 建设网站的心得体会设计logo去哪里找
  • AI开源应用:Pandas AI(一)
  • 【HarmonyOS 6】SpeechKit中的朗读控件,初始化前不进行窗口舞台的设置,也不会报错,与文档描述不符。
  • 大连旅游网站建设创建全国文明城市的目的
  • 【docker】运行对应服务
  • 做网站哪种编程语言最好公司响应式网站建设报价
  • 临沂网站建设中企动力58网站模板
  • 珠海品牌型网站建设网站设计怎么做链接
  • 哈尔滨无障碍网站建设ui培训费用
  • 如何在Ubuntu虚拟机中设置Samba共享,并在Windows宿主机中挂载为网络驱动器
  • 使用yopmail注册临时邮箱
  • 百度公司可以建设网站网页版哔哩哔哩怎么下载视频
  • 工厂弄个网站做外贸如何建立自己的网站平台的好处
  • 电力系统调度自动化的五遥: 遥信 遥测 遥控 遥调 遥视
  • 怎么做电影网站教程网站页面统计代码
  • 自建网站访问报错坊网站建设
  • 哪些网站可以做画赚钱网页设计学校模板
  • (四)自然语言处理笔记——Fasttext
  • 英集芯-IP5385 IIC通信异常原因深入分析及解决方案 21
  • 营销型企业网站建设哪家好shopex进入网站自动回跳转到别的网站 是否被挂马
  • 手机购买网站源码深圳网站建设培训机构
  • 厦门公司注册网站做导购网站
  • 网站建设是网络工程师吗熊掌号网站改造绑定织梦网站
  • 泉州网站建设公司首选公司软件开发专业属于哪个专业大类