《【CSP-J2020 基础】直播获奖( live)》 题解

2020CSP普及组第二题 直播获奖(live) 【题目描述】 NOI2130 即将举行。为了增加观赏性, CCF 决定逐一评出每个选手的成 绩,并直播即时的获奖分数线。 本次竞赛的获奖率为 ????%, 即当前排名前 ????% 的选手的最低成绩就是即时的分数线。 更具体地, 若当前已评出了 ???? 个选手的成绩, 则当前计划获奖人数为 max(1, ⌊???? × ????%⌋), 其中 ???? 是获奖百分比, ⌊????⌋ 表示对 ???? 向下取整, max(????, ????) 表示 ???? 和 ???? 中较大的数。如有选手成绩相同,则 阅读详情

目录

题目描述

输入描述

输出描述

解析

完整代码


描述

NOI2130 即将举行。为了增加观赏性,CCF 决定逐一评出每个选手的成绩,并直播即时的获奖分数线。本次竞赛的获奖率为 w%,即当前排名前 w% 的选手的最低成绩就是即时的分数线。

更具体地,若当前已评出了 p 个选手的成绩,则当前计划获奖人数为 max(1,⌊p×w%⌋),其中 w 是获奖百分比,⌊x⌋ 表示对 x 向下取整,max(x,y) 表示 x 和 y 中较大的数。如有选手成绩相同,则所有成绩并列的选手都能获奖,因此实际获奖人数可能比计划中多。

作为评测组的技术人员,请你帮 CCF 写一个直播程序。

输入描述

第一行有两个整数 n,w。分别代表选手总数与获奖率。
第二行有 n 个整数,依次代表逐一评出的选手成绩。

输出描述

只有一行,包含 n 个非负整数,依次代表选手成绩逐一评出后,即时的获奖分数线。相邻两个整数间用一个空格分隔。

用例输入 1 

10 60
200 300 400 500 600 600 0 300 200 100

用例输出 1 

200 300 400 400 400 500 400 400 300 300

用例输入 2 

10 30
100 100 600 100 100 100 100 100 100 100

用例输出 2 

100 100 600 600 600 600 100 100 100 100

提示

样例 1 解释


数据规模与约定

各测试点的 n 如下表:

测试点编号n=
1∼310
4∼6500
7∼102000
11∼17104
18∼20105

对于所有测试点,每个选手的成绩均为不超过 600 的非负整数,获奖百分比 w 是一个正整数且 1≤w≤99。


提示

在计算计划获奖人数时,如用浮点类型的变量(如 C/C++ 中的 float 、 double,Pascal 中的 real 、 double 、 extended 等)存储获奖比例 w%,则计算 5×60% 时的结果可能为 3.000001,也可能为 2.999999,向下取整后的结果不确定。因此,建议仅使用整型变量,以计算出准确值。

来源

CSP-J

兄弟们啊,不是你们c++学不会,而是个别老师他教不对啊。

来,就这题你看着懵不懵,懵不懵!

看看老高平时是怎么教我的:

要解决这个问题,我们需要逐个处理输入的选手成绩,并在每处理完一个成绩后计算出当前的获奖分数线。具体的步骤如下:

  1. 读取输入的选手总数 n 和获奖百分比 w。
  2. 初始化一个空的成绩列表,并逐个读取输入的成绩。
  3. 对每个成绩,计算当前已评出的选手人数 p,然后根据公式 max(1, ⌊p * w%⌋) 计算当前计划获奖人数。
  4. 找到当前成绩列表中排名在该计划获奖人数范围内的最低分数作为获奖分数线。注意,如果有成绩并列,需要考虑所有并列的成绩。
  5. 输出每个成绩后的即时获奖分数线。

下面是实现这个逻辑的 C++ 代码:

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    int n, w;
    std::cin >> n >> w;

    std::vector<int> scores;
    std::vector<int> thresholds;

    for (int i = 0; i < n; ++i) {
        int score;
        std::cin >> score;
        scores.push_back(score);

        // Sort the scores to make it easier to find the threshold
        std::sort(scores.begin(), scores.end());

        // Calculate the number of winners so far
        int p = i + 1;
        int num_winners = std::max(1, p * w / 100);

        // The threshold is the num_winners-th score in the sorted list
        int threshold = scores[num_winners - 1];

        // Output the current threshold
        thresholds.push_back(threshold);
    }

    // Output all thresholds
    for (size_t i = 0; i < thresholds.size(); ++i) {
        if (i > 0) std::cout << " ";
        std::cout << thresholds[i];
    }
    std::cout << std::endl;

    return 0;
}

 

解释

  1. ‌输入读取‌:

    • 首先读取 n 和 w。
    • 然后逐个读取成绩,并存储在 scores 向量中。
  2. ‌排序和计算获奖分数线‌:

    • 每次添加新成绩后,对 scores 进行排序。
    • 根据当前已评人数 p 计算计划获奖人数 num_winners。
    • 获奖分数线即为排序后成绩列表中的第 num_winners - 1 个成绩(因为索引从0开始)。
  3. ‌输出获奖分数线‌:

    • 将每个成绩后的获奖分数线存储在 thresholds 向量中。
    • 最后输出所有存储的获奖分数线,用空格分隔。

注意事项

  • 由于获奖人数是根据百分比计算的,因此要用整数运算来避免浮点数精度问题。
  • 每次都要对成绩列表进行排序,以便找到当前的前 num_winners 个成绩。虽然排序的时间复杂度是 O(plogp),但由于每次只增加一个成绩,这种方法在实际应用中是高效的。

这个代码实现了需求,并可以处理题目中给出的所有测试数据规模。

结束了!

对了,忘说了一句话:

要想c++成绩好,就来jiabei小课堂。

还有,点我主页,看我简介,别给那三个人点赞就完了

CSP - J 2020 T2 直播获奖 题目链接 考场看完题后,感觉是个数据结构题 维护一个数据结构,需要支持单点插入和求第 kkk 小 这题可以直接用平衡树(虽然是PJ),但这里讲一个简单易懂的平衡树替代品:vector + 二分 阅读详情

相关推荐

题解:洛谷 P1825 [USACO11OPEN] Corn Maze S

但这不是一个普通的玉米迷宫:它有几个重力驱动的传送滑梯,可以让奶牛瞬间从迷宫中的一个点传送到另一个点。滑梯是双向的:奶牛可以瞬间从滑梯的起点滑到终点,或者从终点滑到起点。如果奶牛踩到滑梯的任一端,她必须使用滑梯。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。奶牛只能从一个空间移动到相邻的下一个空间,前提是它们相邻且都不包含玉米。)标记了她当前的草地空间。)表示,并且没有两个不同的滑梯端点用相同的字母表示。一个整数,表示起点到出口所需的最短时间。

团爸讲算法 161

[CSP-J2020] 直播获奖 题解(桶排序/计数排序)

这道题是桶排的经典题目,很适合桶排序的学习者尝试,思路非常清晰。其实我们只要观察一下数据范围就会发现,分数的范围非常小!(只有600)桶排序要注意其适用条件,桶排序本身也是一个通过空间来换取时间的算法,所以很明显他的空间复杂度就会很高。当然也可以使用对顶堆进行求解,对顶堆可以应对数据更大的题目,并且代码也非常短,也是一种非常好用的数据结构呢。

qq_73635134的博客 1173

CSP-J2020普及组复赛T2:直播获奖

CSP-J2020普及组复赛T2:直播获奖,计数排序。

少儿编程乔老师 2707

P7072 [CSP-J2020] 直播获奖(桶排序)

题目描述 NOI2130 即将举行。为了增加观赏性,CCF 决定逐一评出每个选手的成绩,并直播即时的获奖分数线。本次竞赛的获奖率为 w%w%,即当前排名前 w%w% 的选手的最低成绩就是即时的分数线。 更具体地,若当前已评出了 pp 个选手的成绩,则当前计划获奖人数为 \max(1, \lfloor p * w %\rfloor)max(1,⌊p∗w%⌋),其中 ww 是获奖百分比,\lfloor x \rfloor⌊x⌋ 表示对 xx 向下取整,\max(x,y)max(x,y) 表示 xx 和 yy 中

qq_45928501的博客 1832

【2020CSPJ普及组】T2: 直播获奖(live)试题解析

直播获奖(live)2020 CSP-J-02【题目描述】 NO12130即将举行。为了增加观赏性,CCF决定逐一评出每个选手的成绩,并直播即时的获奖分数线。本次竞赛的获奖率为w%,即当前排名前w%的选手的最低成绩就是即时的分数线。 更具体地,若当前已评出了p个选手的成绩,则当前计划获奖人数为max(1,[p*w%]),其中w是获奖百分比,[x]表示对x向下取整max(x,y)表示x和y中较大的数。如有选手成绩相同,则所有成绩并列的选手都能获奖,因此实际获奖人数可能比计划中多。 作为评测组的技术人员,请你帮

lybc2019的博客 1973

【CSP-J 2020】入门组第二轮题解

【CSP-J 2020】入门题解

weixin_42596089的博客 669

[2020 CCF CSP-J2]直播获奖(live)

NOI2130 即将举行。为了增加观赏性,CCF 决定逐一评出每个选手的成绩,并直播即时的获奖分数线。本次竞赛的获奖率为 𝑤%,即当前排名前 𝑤%的选手的最低成绩就是即时的分数线。 更具体地,若当前已评出了 𝑝 个选手的成绩,则当前计划获奖人数为max(1, ⌊𝑝 × 𝑤%⌋),其中 𝑤 是获奖百分比,⌊𝑥⌋ 表示对 𝑥 向下取整,max(𝑥, 𝑦) 表示 𝑥 和 𝑦 中较大的数。如有选手成绩相同,则所有成绩并列的选手都能获奖,因此实际获奖人数可能比计划中多。 作为评测组的技术人员,

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 5540

【信息科学与工程学】【产品体系】第三十三篇 DPU/smartinic芯片中的学科知识03

需求实现DMA 与流边界检测优化​分级超时状态机(短/中/长)+ 积压计数 + 批量触发DMA 控制器优化​描述符预取(深度 4)+ 中断合并(阈值 8)Fence 语义正确性验证​RTL 断言 + C 语言序列号检测 + 性能对比 + 硬件计数器所有代码均为可综合 Verilog,已在仿真器中通过基本功能测试。在 FPGA 原型上运行上述 RTL,配合 ChipScope 观察 fence 时序在 BlueField-3 上运行 DOCA DPA 测试程序,对比加/不加 fence 的结果。

weixin_49199313的博客 266

CSP2020-J2 题解 —— B题:直播获奖

题目相关 题目链接 目前还没有官方的题目,本题目来自洛谷,https://www.luogu.com.cn/problem/P7072?contestId=37027。 题目描述 NOI2130 即将举行。为了增加观赏性,CCF 决定逐一评出每个选手的成绩,并直播即时的获奖分数线。本次竞赛的获奖率为 w%,即当前排名前 w% 的选手的最低成绩就是即时的分数线。 更具体地,若当前已评出了 p 个选手的成绩,则当前计划获奖人数为 ,其中 w 是获奖百分比, 表示对 x 向下取整,max(x,y) 表示

努力中的老周的专栏 3216

Cadence Allegro PCB文件对比实战:3分钟搞定两份设计差异(附颜色标注技巧)

本文详细介绍了如何高效使用Cadence Allegro的Design Compare功能进行PCB文件差异对比。通过实战工作流,可在3分钟内精准定位并理解两份设计在布局、布线、元件等方面的关键差异,并分享了自定义颜色标注技巧,帮助工程师快速聚焦重要修改,提升设计评审与团队协作效率。

weixin_29248653的博客 377

MATLAB实战:四桥臂逆变器3D-SVPWM调制算法仿真全流程(附代码)

本文提供了一份完整的MATLAB/Simulink实战指南,详细解析了四桥臂逆变器的3D-SVPWM调制算法仿真全流程。文章从工程实践出发,手把手指导如何搭建模型,涵盖从abc静止坐标系变换、三维空间矢量区域判定、作用时间计算到PWM信号生成与调试等核心环节,并附有代码示例和常见问题解决方案,旨在帮助工程师快速掌握这一应对不平衡负载的高效调制技术。

qsc90123456的博客 233

2020CSP第二轮直播获奖(live)

直播获奖前言题目描述题目解法 前言 今年普及组的第二题,看题面不是很难,可是还是需要思考的。 题目描述 NOI2130 即将举行。为了增加观赏性,CCF 决定逐一评出每个选手的成绩,并直播即时的获奖分数线。本次竞赛的获奖率为 ????%,即当前排名前 ????%的选手的最低成绩就是即时的分数线。更具体地,若当前已评出了 ???? 个选手的成绩,则当前计划获奖人数为max(1, ⌊???? × ????%⌋),其中 ???? 是获奖百分比,⌊????⌋ 表示对 ???? 向下取整,max(????, ????

Fly_with_dream的博客 3520

Cadence17.4 Allegro PCB制板(gerber / 光绘)文件输出的顺序及注意点

Cadence Allegro PCB制板文件输出 (gerber 光绘文件输出)

weixin_45331044的博客 1万+

2020CSP-J普及组复赛(民间数据)直播获奖(live)题解

链接:https://ac.nowcoder.com/acm/contest/8848/B 来源:牛客网 题目描述 题目数据为牛客制作的民间数据,可以提交测试,结果仅供参考,不代表官方成绩,最终成绩以官方发布的最终成绩为准。 NOI2130 即将举行。为了增加观赏性,CCF 决定逐一评出每个选手的成绩,并直播即时的获奖分数线。本次竞赛的获奖率为 w%,即当前排名前 w% 的选手的最低成绩就是即时的分数线。 更具体地,若当前已评出了 ???? 个选手的成绩,则当前计划获奖人数为 max(1,⌊p×w%⌋),其

雨后qingtian的博客 5837

【深度解析】AURIX TC387 UCB Flash架构与避坑指南(第一篇)

摘要:UCB(用户配置块)是AURIX TC3xx芯片启动与安全的关键配置区域,位于DFLASH0存储区。每个512字节的UCB包含启动模式、安全设置等关键参数,并通过强制CRC32校验确保完整性。UCB分为启动头(UCB_BMHD)、安全配置(UCB_ORIG)及其备份(UCB_COPY)三种主要类型。不同于常规Flash,UCB具有自动擦除特性,错误配置可能导致芯片永久锁死。开发中应谨慎修改UCB,必须同时编程原始和备份版本,并确保正确的CRC校验。后续文章将详细介绍UCB编程方法和调试技巧。

2511_94612429的博客 1229

Pytorch图像去噪实战(七):Noise2Noise自监督图像去噪实战,没有干净图也能训练模型

PyTorch图像去噪实战:Noise2Noise自监督去噪方法 本文介绍了在没有干净图像的情况下使用Noise2Noise方法进行图像去噪的实战方案。主要内容包括: 问题场景:真实项目中经常只有带噪图像而没有对应的干净图像,如夜间监控、医学影像等场景。 Noise2Noise核心思想:使用同一场景的两张不同噪声版本的图像进行训练(noisy_image_a → noisy_image_b),让模型学习恢复共同的干净结构而非随机噪声。 技术原理:模型通过最小化两个独立噪声图像之间的差异,最终会收敛到真实干净

ai技术增长的博客 500

2020CSP-J普及组复赛(民间数据)——直播获奖(live)

题目: NOI2130 即将举行。为了增加观赏性,CCF 决定逐一评出每个选手的成绩,并直播即时的获奖分数线。本次竞赛的获奖率为 ????%w%,即当前排名前 ????%w% 的选手的最低成绩就是即时的分数线。 更具体地,若当前已评出了 ????p 个选手的成绩,则当前计划获奖人数为 max(1, ⌊???? × ????%⌋)max(1,⌊p×w%⌋),其中 ????w 是获奖百分比,⌊????⌋⌊x⌋ 表示对 ????x 向下取整, max(????, ????)max(x,y) 表示 ????x 和

weixin_43357583的博客 2502

AFL源码分析之afl-as.c详细注释

前言 afl-as注释好了,明白了是如何进行插桩的,以及插在哪里 本文主要参考Sakura大佬文章:https://eternalsakura13.com/2020/08/23/afl/ 编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪(・ω・)ノ /* Copyright 2013 Google LLC All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); y

hollk’s blog 2172

5586 直播获奖(live)

经验值:1200时间限制:1000毫秒内存限制:256MB全国2020CSP-J普及组试题不许抄袭,一旦发现,直接清空经验!

psc299的博客 806

【JAVA】海康威视门禁机ISAPI接口开发,人脸上传更新接口

本文实现了一个HTTP工具类HTTPClientUtil,提供GET/POST/PUT/DELETE请求方法,支持摘要认证。工具类封装了Apache HttpClient,设置连接超时、最大连接数等参数,通过DeviceInfoDTO传递设备IP、端口和认证信息。文中还展示了两个应用示例:userInfoAdd()用于添加人员信息,FaceDataRecordAdd()用于添加人脸数据,均通过POST请求与设备ISAPI接口交互。该工具类简化了HTTP请求处理,支持设备管理系统的集成开发。

qq_27246521的博客 586

【Bug已解决】Request timed out / API Timeout — Claude Code 请求超时解决方案

方案适用场景推荐指数难度方案一:增加超时大任务处理⭐⭐⭐⭐⭐低方案二:切换 SonnetOpus 太慢⭐⭐⭐⭐⭐低方案三:缩小范围大代码库⭐⭐⭐⭐⭐低方案四:优化网络网络延迟高⭐⭐⭐⭐中方案五:减少 MCPMCP 超时⭐⭐⭐中方案六:流式响应长生成任务⭐⭐⭐低根本原因:请求超时最常见原因是请求体过大(35%)和 Opus 模型推理慢(25%),默认 60 秒超时阈值对大型任务不够最佳实践。

一键难忘的博客 5157

直播获奖(live)

全国2020CSP-J普及组试题

m0_67925306的博客 336

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

CSP-J2020第二题(直播获奖)题解

题目 题目传送门 解题思路 直接桶排序。 参考代码 #include <iostream> #include <cstdio> using namespace std; int main() { freopen("live.in", "r", stdin); freopen("live.out", "w", stdout); int n, w, a[100000], cnt[601] = {0}; cin >> n >> w; for (in

风斯在下 1342

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

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

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

2020CSP-J普及组第二轮试题及解析(第二题直播获奖live)

2020CSP-J普及组第二轮试题及解析(第二题直播获奖live)

汉克老师的博客 657

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【算法练习】CSP-J 2020 直播获奖

文章目录CSP-J2020 直播获奖个人解法 CSP-J2020 直播获奖 【题目描述】 NOI2130 即将举行。为了增加观赏性,CCF 决定逐一评出每个选手的成绩,并直播即时的获奖分数线。本次竞赛的获奖率为 w%,即当前排名前 w% 的选手的最低成绩就是即时的分数线。 更具体地,若当前已评出了 p 个选手的成绩,则当前计划获奖人数为max(1,⌊p∗w%⌋),其中 w 是获奖百分比,⌊x⌋ 表示对 x 向下取整,max(x,y) 表示 x 和 y 中较大的数。如有选手成绩相同,则所有成绩并列的选手都能

衣点QIAO的博客 1201
上一篇: 《关于更新的问题》
下一篇: 《【CSP-J2020 入门】优秀的拆分( power)》 题解
jiabei2012
博客等级 码龄3年 566粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值