news 2026/6/15 15:35:58

2024年信奥赛C++提高组csp-s初赛真题及答案解析(完善程序第1题)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2024年信奥赛C++提高组csp-s初赛真题及答案解析(完善程序第1题)

2024年信奥赛C++提高组csp-s初赛真题及答案解析(完善程序第1题)

第 1 题

(序列合并)有两个长度为 N的单调不降序列 A和 B,序列的每个元素都是小于10 9 10^9109的非负整数。在 A和 B中各取一个数相加可以得到 N2 ^22个和,求其中第 K小的和。上述参数满足 N≤10 5 10^5105和 1≤K≤N 2 N^2N2

#include<iostream>usingnamespacestd;constintmaxn=100005;intn;longlongk;inta[maxn],b[maxn];int*upper_bound(int*a,int*an,intai){intl=0,r=___①___;while(l<r){intmid=(l+r)>>1;if(___②___){r=mid;}else{l=mid+1;}}return___③___;}longlongget_rank(intsum){longlongrank=0;for(inti=0;i<n;++i){rank+=upper_bound(b,b+n,sum-a[i])-b;}returnrank;}intsolve(){intl=0,r=___④___;while(l<r){intmid=((longlong)l+r)>>1;if(___⑤___){l=mid+1;}else{r=mid;}}returnl;}intmain(){cin>>n>>k;for(inti=0;i<n;++i)cin>>a[i];for(inti=0;i<n;++i)cin>>b[i];cout<<solve()<<endl;}
  1. ① 处应填( )?
    A.an-a
    B.an-a-1
    C.ai
    D.ai+1
  2. ② 处应填( )?
    A.a[mid] > ai
    B.a[mid] >= ai
    C.a[mid] < ai
    D.a[mid] <= ai
  3. ③ 处应填( )?
    A.a+l
    B.a+l+1
    C.a+l-1
    D.an-l
  4. ④ 处应填( )?
    A.a[n-1]+b[n-1]
    B.a[n]+b[n]
    C.2 * maxn
    D.maxn
  5. ⑤ 处应填( )?
    A.get_rank(mid) < k
    B.get_rank(mid) <= k
    C.get_rank(mid) > k
    D.get_rank(mid) >= k
题解:

本题要求从两个长度为 (N) 的单调不降序列 (A) 和 (B) 中各取一个数相加,得到 (N2 ^22) 个和,求第 (K) 小的和。解题思路是利用二分答案,统计有多少个和不超过给定的值 (sum),然后通过二分找到最小的 (sum) 使得不超过它的和的数量至少为 (K)。

  • :在upper_bound函数中,需要确定二分查找的右边界,即数组的长度。由于参数aan分别指向数组起始和结束的下一个位置,因此长度应为an - a选A
  • upper_bound函数的目标是找到第一个大于ai的元素,因此在二分过程中,当a[mid] > ai时,应将右边界移动到mid,否则左边界移动到mid + 1选A
  • :二分查找结束后,左边界l即为第一个大于ai的元素的索引,因此返回指针a + l选A
  • :二分答案的右边界应设为可能的最大和,即 (a[N-1] + b[N-1])。选A
  • :在二分答案过程中,若get_rank(mid)(即不超过mid的和的数量)小于 (K),说明mid太小,需要增大左边界;否则减小右边界。因此条件为get_rank(mid) < k选A

专栏推荐:信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新)
https://blog.csdn.net/weixin_66461496/category_13125089.html


各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}

1、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html

2、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

3、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转


GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html

4、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 0:18:09

Cadence PCB设计实战:如何高效翻转查看Bottom层布线

Cadence PCB设计实战&#xff1a;如何高效翻转查看Bottom层布线 摘要&#xff1a;本文针对Cadence PCB设计新手在查看Bottom层布线时遇到的翻转操作不便问题&#xff0c;提供三种高效查看方案&#xff1a;快捷键操作、视图配置预设以及3D可视化技巧。通过具体操作演示和避坑指南…

作者头像 李华
网站建设 2026/6/15 10:39:32

ChatGPT与DeepSeek的技术革命:从模型架构到产业影响深度解析

技术背景&#xff1a;从“猜词”到“思考” 如果把 2017 年 Transformer 的发布比作内燃机诞生&#xff0c;那么大语言模型&#xff08;LLM&#xff09;的演进就是汽车工业的迭代史。GPT 系列用“下一个 token 预测”把无监督预训练推向极致&#xff1b;InstructGPT 引入 RLHF…

作者头像 李华
网站建设 2026/6/15 0:24:33

智能手环背后的数据科学:健康参数监测的算法密码

智能手环背后的数据科学&#xff1a;健康参数监测的算法密码 清晨六点&#xff0c;当大多数人还在睡梦中&#xff0c;李工程师的智能手环已经完成了第三次心率变异分析。这款搭载STM32微控制器的设备&#xff0c;正通过MAX30102传感器捕捉每一次脉搏的微妙变化&#xff0c;而三…

作者头像 李华
网站建设 2026/6/15 10:40:36

AI模型容器化部署终极指南(Docker 27原生AI支持深度解析)

第一章&#xff1a;AI模型容器化部署的演进与Docker 27时代意义 AI模型从实验室走向生产环境的关键跃迁&#xff0c;始终围绕着可复现性、环境一致性与资源调度效率三大核心挑战展开。早期依赖虚拟机或裸机部署导致启动慢、镜像臃肿、GPU资源隔离弱&#xff1b;随后Docker 19–…

作者头像 李华
网站建设 2026/6/15 10:45:19

在R语言中使用ggplot2绘制带渐变的不确定性带的预测线

在数据可视化中,展示预测线的不确定性是非常重要的,因为它能帮助我们更好地理解模型的预测能力和数据的变异性。通常情况下,我们会用到置信区间或预测区间来表示这种不确定性。今天,我们将介绍如何在R语言的ggplot2包中绘制一个带有渐变效果的不确定性带的预测线。 准备数…

作者头像 李华