整理 NOI 初赛资料目录并标准化 CSP-J 模拟卷
- 将18套模拟卷分离为试题和答案解析,补齐并规范逐题解析 - 补充SVG图示,统一试题排版并导出打印PDF - 重整初赛专题训练与复习资料目录,清理旧版源文件
This commit is contained in:
1 parent
fe5c7ffd58
commit
0af92a68d9
216 files changed
+12743
-1272
No files matched your search
@@ -0,0 +1,330 @@
|
||||
<center><font size="6"><b>CSP-J 初赛模拟卷(第 02 套)</b></font></center>
|
||||
<center><font size="4"><b>参考答案与解析</b></font></center>
|
||||
|
||||
---
|
||||
|
||||
#### **一、单项选择题**
|
||||
|
||||
**答案速查**
|
||||
|
||||
| 题号 | 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` 坐标均严格递增,以分别作为左下和右上顶点,避免退化矩形和重复计数。
|
||||
Reference in new issue
Block a user