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

9.9 KiB
Raw Blame History

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

一、单项选择题

答案速查

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

逐题解析

第1题

答案: D

解析: 打印机将计算机中的信息输出到纸张上,属于输出设备;扫描仪、键盘和鼠标属于输入设备。

第2题

答案: C

解析: b 位二进制最多表示 2^b 种状态。因为 $2^8=256$,所以至少需要 8 位。

第3题

答案: D

解析: 若先输出 c、d,则 a、b 仍在栈中,且 b 位于 a 上方。在输出 a 之前必须先输出 b,因此 c,d,a,e,b 不合法。

第4题

答案: A

解析: 高度为 5 时,前 4 层必须填满,最后一层可从左到右放置 1 至 16 个结点。结点数确定后形态唯一,因此有 16 种形态。

第5题

答案: A

解析: $(11.01)_2=1\times2^1+1\times2^0+0\times2^{-1}+1\times2^{-2}=3.25$。

第6题

答案: D

解析: 8 位无符号整数的范围是 0 至 $2^8-1=255$。选项中能表示的数为 133 和 $199$,其中较大的是 $199$。

第7题

答案: C

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

第8题

答案: C

解析: $(101.11)_2=2^2+2^0+2^{-1}+2^{-2}=4+1+0.5+0.25=5.75$。

第9题

答案: C

解析: 逆序排列的 5 个数共有 \binom52=10 个逆序对。冒泡排序每次相邻交换恰好减少一个逆序对,因此需要 10 次交换。

第10题

答案: A

解析: 三个数字各不相同时有 3!=6 种。数字 1 出现两次时,另一位可选 2 或 3,共 2\times3=6 种;数字 2 出现两次时同样有 6 种。合计 18 种。

第11题

答案: D

解析: 选项 D 对 2,6,10,17 分别得到 $1,2,3,4$,四个地址互不相同;其余三个哈希函数均产生重复地址。

第12题

答案: D

解析: 寄存器位于 CPU 内部,用于暂存操作数、地址及中间结果,是 CPU 的重要组成部分。

第13题

答案: D

解析: 展开递推式可得 $T(n)=T(0)+1+2+\cdots+n=1+n(n+1)/2$,所以时间复杂度为 $O(n^2)$。

第14题

答案: B

解析: 小于 100 的最大素数为 $97$;$98$、99 和 100 均为合数。

第15题

答案: C

解析: 当数组已经按非递减顺序排列时,第一趟需比较相邻元素 n-1 次,但不发生交换,FLAG 保持为 $1$,随后循环结束。

二、阅读程序

程序(1)

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

答案速查

题号 16 17 18 19 20 21
答案 × √ √ B B C
第16题

答案: ×(错误)

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

第17题

答案: √(正确)

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

第18题

答案: √(正确)

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

第19题

答案: B

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

第20题

答案: B

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

第21题

答案: C

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

程序(2)

程序分析: 每次合并相邻两项,第一分量和第二分量分别相加,代价为两项第一分量之和加上第二分量之差的绝对值。DFS 枚举所有合并顺序并恢复现场,ans 保存最大总代价;也可用区间动态规划核对结果。

答案速查

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

答案: ×(错误)

解析: n=0 时不满足递归终止条件,但合并循环也不会执行,函数直接返回,最终输出 $0$,不会因该输入而死循环。

第23题

答案: √(正确)

解析: 所有输入为零时,每次合并代价均为零,所以任何合并顺序的总代价均为零。

第24题

答案: ×(错误)

解析: 取 $n=1$,不发生任何合并,输出为 $0$;若唯一输入项大于零,输出就小于该输入值。

第25题

答案: B

解析: 第一分量全为 $9$、第二分量全为零时,最优顺序依次合并为含 2,3,\ldots,20 项的区间,总代价为 $9(2+3+\cdots+20)=1881$。

第26题

答案: C

解析: 合并后的第二分量为已有项数的 5 倍。最优链式合并的各次差值为 $5\times0,5\times1,\ldots,5\times28$,总代价为 $2030$。

第27题

答案: C

解析: 对每个连续区间枚举最后一次合并位置,按合并公式取最大值;对两行均为 15,14,\ldots,1 的数据计算,最大总代价为 $2240$。

程序(3)

程序分析: a[x]=y 与 b[y]=x 维护两侧结点的一一配对,冲突配对会先解除。最后分别统计两数组中的零元素;若当前有 t 对配对,输出为 $2n-2t$。

答案速查

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

答案: √(正确)

解析: 第一对正编号结点必定可以配对,之后的更新不会使配对总数降为零,因此 m>0 时最终至少有一对,输出小于 $2n$。

第29题

答案: ×(错误)

解析: 最终答案为偶数,但某一次执行 ++ans 后的中间值可以是奇数。例如仅配对 (1,2) 时,扫描 i=1 就可能使 ans 变为 $1$。

第30题

答案: ×(错误)

解析: 例如输入配对 (1,2)、(3,1) 后,a[1]=2、b[1]=3,二者可以同时大于零。

第31题

答案: ×(错误)

解析: 例如先后输入 (1,2)、(1,3),每次均有 x<y,但第二次仍须解除旧配对,因此相应语句会执行。

第32题

答案: A

解析: 两侧编号分别互不相同时,所有 m 对都能保留,零元素总数为 $2(n-m)=2n-2m$。

第33题

答案: A

解析: 所有 y 相同时,最终只能保留其中一对配对,故零元素总数为 $2n-2$。

三、完善程序

程序(1)

程序分析: 递归把一个 2^n\times2^n 的矩阵分成四个子矩阵,左上、右上、左下保持当前值 t,右下取反。到单个元素时写入 t。初始元素为 $0$。

答案速查

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

答案: C(t)

解析: n==0 时对应单个元素,其值就是参数 t。

第35题

答案: D(x,y)

解析: 左上子矩阵的左上角不变,应继续使用坐标 x,y。

第36题

答案: B(x+step,y+step)

解析: 右下子矩阵的行、列起点都需加上 step,并由已有参数 !t 实现取反。

第37题

答案: B(n, 0)

解析: 初始调用需递归 n 层,且原始元素为 $0$,因此传入 n,0。

第38题

答案: B(1<<n)

解析: 变换 n 次后的边长为 $2^n$,对应位移表达式 1<<n。

程序(2)

程序分析: 程序按坐标字典序排序、去重,再枚举矩形的左下和右上顶点,通过二分查找确认另两个顶点是否存在,从而统计边平行于坐标轴的矩形。

答案速查

题号 39 40 41 42 43
答案 B D C B D
第39题

答案: B(a.x != b.x ? a.x < b.x : a.y < b.y)

解析: 比较函数应先比较 x,再比较 y;只比较坐标,才能与后续按坐标构造的查询点一致。

第40题

答案: D(t == 0 || !equals(A[i], A[t-1]))

解析: 当尚未保留任何点,或当前点与最后保留的点坐标不同时,才把当前点加入去重结果。

第41题

答案: C((a+b) >> 1)

解析: 区间更新为 a=mid+1 或 b=mid,应使用向下取整的中点 (a+b)>>1,保证区间收缩。

第42题

答案: B(cmp(A[mid], p))

解析: 当 A[mid] 按同一比较规则小于目标点 p 时,目标应在右侧,因此使用 cmp(A[mid],p)。

第43题

答案: D(A[i].x < A[j].x && A[i].y < A[j].y)

解析: 要求两点满足 x、y 坐标均严格递增,以分别作为左下和右上顶点,避免退化矩形和重复计数。