Files
cpp-courseware/2.Course/5.C++_Exam/NOI/CSP-J 初赛模拟卷/答案解析/CSP-J初赛模拟卷·第07套-答案解析.md
T
xiaolinquan 0af92a68d9 整理 NOI 初赛资料目录并标准化 CSP-J 模拟卷
- 将18套模拟卷分离为试题和答案解析,补齐并规范逐题解析
- 补充SVG图示,统一试题排版并导出打印PDF
- 重整初赛专题训练与复习资料目录,清理旧版源文件
2026-11-06 17:50:51 +08:00

10 KiB
Raw Blame History

CSP-J 初赛模拟卷(第 07 套)
参考答案与解析

一、单项选择题

答案速查

题号 1 2 3 4 5 6 7 8
答案 A D A A A C C A
题号 9 10 11 12 13 14 15
答案 C B C A C B A

逐题解析

第1题

答案: A

解析: 早期电子计算机首先用于科学与工程中的数值计算,例如数值表和复杂算式的计算。

第2题

答案: D

解析: 将两个二进制数对齐后逐位进行与运算,只有两位均为 1 时结果才为 $1$,得到 01 0010 1000 0011。

第3题

答案: A

解析: 存储单元的唯一标识称为地址,CPU 根据地址读写相应的存储单元。

第4题

答案: A

解析: 每两轮形成 ASDFasdf 的 8 字符循环。$81\bmod8=1$,因此第 81 个字符是大写 A。

第5题

答案: A

解析: 所需空间为 800\times600\times16/8=960000 字节,即 $960000/1024=937.5\ \mathrm{KB}$。

第6题

答案: C

解析: 先将第一个数作为当前最大值,再依次与其余 N-1 个数比较。每次比较至多排除一个候选最大值,因此至少需要 N-1 次比较。

第7题

答案: C

解析: 在题目的理论模型中,机器字长和地址宽度不同,会导致可寻址空间不同;显示器、硬盘容量和输入法不由 32 位或 64 位这一分类直接决定。

第8题

答案: A

解析: 按边数分类:3 条边时有路径和星形两种,4 条边时有四边形和三角形带一条悬挂边两种,5 条边和 6 条边时各一种,共 2+2+1+1=6 种。

第9题

答案: C

解析: 最少比较次数出现在输入数组已经有序时:第一趟比较 n-1 对相邻元素,没有交换,随后外层循环结束。

第10题

答案: B

解析: 先计算 b+c,其后缀表达式为 bc+;再与 a 相乘,最后与 d 相乘,得到 abc+*d*。

第11题

答案: C

解析: 从根开始依次沿右孩子到达图中最右下结点,其下标依次为 $1,3,7,15$,所以数组最大下标至少为 $15$。

第12题

答案: A

解析: $13=8+4+1=(1101)_2$,$0.375=1/4+1/8=(0.011)_2$,合并得到 $(1101.011)_2$。

第13题

答案: C

解析: 首尾两位及第二、四位分别可取 00、11、88、69、96,各有 5 种选择;中间一位只能取 0、1、8。共有 5\times5\times3=75 种。

第14题

答案: B

解析: x & (x-1) 每次恰好清除二进制表示中最右侧的一个 1。循环次数因此等于 1 的个数,所填语句为 x &= x - 1。

第15题

答案: A

解析: CPU 负责执行运算和控制程序运行。易失性存储器断电后可能丢失数据,屏幕尺寸与分辨率不具有一一对应关系,接入互联网也不限于 Wi-Fi。

二、阅读程序

程序(1)

程序分析: 对每个位置 i,程序输出从该位置向右、连续元素均不大于 a[i] 的最远端点 ans。若当前值比前一个值小,则重新从 i 开始寻找。

答案速查

题号 16 17 18 19 20 21
答案 × √ √ √ D A
第16题

答案: ×(错误)

解析: ans 至少等于 i,但可能恰好等于 i;例如严格递增序列中每次输出就是当前位置,因此不保证严格大于。

第17题

答案: √(正确)

解析: 只有在 ans<n 时才执行递增操作,故 ans 不会超过 $n$。

第18题

答案: √(正确)

解析: 下降时两种条件都会重置;上升时重置为 i 也不会丢失合法的更远端点;相等时两种条件都不重置,因此结果不变。

第19题

答案: √(正确)

解析: ans 是连续满足约束的最远端点。既然已越过 i+1,该位置的值必然不大于 a[i]。

第20题

答案: D

解析: 严格递增时,每轮只需常数次判断,ans 随位置推进,整体时间复杂度为 $O(n)$。

第21题

答案: A

解析: 严格递减时,每个位置都会重置并向右扫描至末尾,总次数为 $n+(n-1)+\cdots+1$,最坏复杂度为 $O(n^2)$。

程序(2)

程序分析: 程序将 Base64 字符映射为 6 位整数,再将每四个编码字符组合为至多三个原始字节。ans 是全局字符数组,输出时按以零结尾的 C 字符串处理。题目规定 char 为有符号的 8 位类型。

答案速查

题号 22 23 24 25 26 27
答案 × √ √ B B C
第22题

答案: ×(错误)

解析: 限定的字符集合是 Base64 编码的输入字符集;解码结果可以包含空格等其他字符,因此该断言错误。

第23题

答案: √(正确)

解析: 例如 YQ== 解码为 a,YQA= 解码为 a 后跟零字节。用 %s 输出时都会在零字节处结束,第二行同为 a。

第24题

答案: √(正确)

解析: table[0] 被初始化为全一位模式 0xff,在题目规定的有符号 8 位 char 中表示 $-1$,转为 int 后仍为 $-1$。

第25题

答案: B

解析: 循环每次处理 4 个输入字符,每轮只进行常数次运算,总时间复杂度为 $O(n)$。

第26题

答案: B

解析: 将 Y3Nx 按 Base64 解码,依次得到字符 c、s、q,所以输出 csq。

第27题

答案: C

解析: 该字符串解码为 ccf 2021,其中 ccf 与年份之间有一个空格,不能省略。

程序(3)

程序分析: 程序先用 Floyd 算法求最短路,再枚举一对顶点,将其间距离设为零并更新最短路,最后取所有无序顶点对距离之和的最小值。

答案速查

题号 28 29 30 31 32 33
答案 × × √ √ A A
第28题

答案: ×(错误)

解析: Floyd 算法需要把中转顶点 k 放在最外层,保证阶段性状态含义;改为 i,j,k 后不再具有这一保证,结果可能改变。

第29题

答案: ×(错误)

解析: 读入边需要 O(m) 时间,后续枚举和更新需要 O(n^4) 时间,整体可写为 $O(m+n^4)$,不能说所有运行步骤都与 m 无关。

第30题

答案: √(正确)

解析: 在允许的图规模和边权下,最优距离总和也可能大于 $10^7$。若把 ans 初始化为该值,取最小值时就可能保留错误的初值。

第31题

答案: √(正确)

解析: 两次更新分别允许经由顶点 i 和 j,最终允许的中转顶点集合相同,因此交换这两次更新的顺序不影响结果。

第32题

答案: A

解析: 对给定图枚举置零的顶点对并计算更新后的无序点对最短路之和,最小结果为 $14$。

第33题

答案: A

解析: 代码使用“枚举中转点并松弛任意两点距离”的 Floyd 算法。

三、完善程序

程序(1)

程序分析: 程序用两次计数排序完成二关键字排序:先按次关键字 b 排序,再稳定地按主关键字 a 排序。ord、res 保存原数据下标,最终按 a 优先、b 次之输出。

答案速查

题号 34 35 36 37 38
答案 B D C A B
第34题

答案: B(++cnt[b[i]])

解析: 第一趟按 b 排序,因此应统计每个 b[i] 的出现次数,执行 ++cnt[b[i]]。

第35题

答案: D(ord[--cnt[b[i]]] = i)

解析: 前缀计数确定排序位置,需在 ord[--cnt[b[i]]] 中记录原数据下标 i。

第36题

答案: C(++cnt[a[i]])

解析: 第二趟以 a 为主关键字,因此统计 a[i] 的出现次数。

第37题

答案: A(res[--cnt[a[ord[i]]]] = ord[i])

解析: 沿第一趟结果逆序扫描,并按 a[ord[i]] 放入最终位置,以保持相同 a 时原有的 b 顺序。

第38题

答案: B(a[res[i]], b[res[i]])

解析: 最终排列保存在 res 中,应输出原数组中下标为 res[i] 的二元组。

程序(2)

程序分析: 程序排序后,用资金最多的候选同学与价格最低的自行车配对,累计各人的不足金额,判断公共预算能否补足;再二分求最多可租车的人数。函数参数 nn 为本次待检验人数。

答案速查

题号 答案
39 n-nn+1
40 M[i] < C[j]
41 count <= A
42 check(mid)
43 mid-1
第39题

答案: n-nn+1

解析: 应选取排序后资金最多的 nn 人,其第一人的下标是 n-nn+1。

第40题

答案: M[i] < C[j]

解析: 只有自行车价格高于该同学已有资金时才需公共预算补足,即判断 M[i]<C[j]。

第41题

答案: count <= A

解析: 累计不足金额 count 不超过学校预算 A 时,本次人数可行,因此返回 count<=A。

第42题

答案: check(mid)

解析: 将二分得到的候选人数 mid 交给判定函数,调用 check(mid)。

第43题

答案: mid-1

解析: 候选人数不可行时,应把右边界缩小到 mid-1,排除当前值及更大值。