整理 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,325 @@
|
||||
<center><font size="6"><b>CSP-J 初赛模拟卷(第 15 套)</b></font></center>
|
||||
<center><font size="4"><b>参考答案与解析</b></font></center>
|
||||
|
||||
---
|
||||
|
||||
#### **一、单项选择题**
|
||||
|
||||
**答案速查**
|
||||
|
||||
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|
||||
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
||||
| 答案 | B | A | A | A | B | B | A | B |
|
||||
|
||||
| 题号 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|
||||
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
||||
| 答案 | D | B | A | B | C | A | D |
|
||||
|
||||
**逐题解析**
|
||||
|
||||
##### 第1题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** 图灵奖是计算机科学领域的重要奖项;其余奖项分别主要面向电影、自然科学及文学等领域、新闻等领域。
|
||||
|
||||
##### 第2题
|
||||
|
||||
**答案:** A
|
||||
|
||||
**解析:** 早期电子计算机首先用于科学与工程中的数值计算,例如数值表和复杂算式的计算。
|
||||
|
||||
##### 第3题
|
||||
|
||||
**答案:** A
|
||||
|
||||
**解析:** 各层最多分别有 $1,2,4,\ldots,2^{n-1}$ 个结点,求和得到 $2^n-1$。
|
||||
|
||||
##### 第4题
|
||||
|
||||
**答案:** A
|
||||
|
||||
**解析:** 删除边 `a` 后,剩余有向路径仍使任意两个顶点互相可达,图仍满足强连通定义,因此选 A。
|
||||
|
||||
##### 第5题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** `a` 初始为 $1$,每轮减 $2$。执行两轮后 `s=2`、`a=-3`;要使循环此时结束,应输入 `n=-3`。
|
||||
|
||||
##### 第6题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** 元素 $7$ 与后面的 $2,3,5,4$ 形成 $4$ 个逆序对,元素 $5$ 与 $4$ 再形成 $1$ 个,合计 $5$ 个。
|
||||
|
||||
##### 第7题
|
||||
|
||||
**答案:** A
|
||||
|
||||
**解析:** 字符串是由字符组成的特殊线性表,可以用数组存储;长度可以为零。含空格字符的串仍含有元素,不是空串。
|
||||
|
||||
##### 第8题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** $10000=2^4\times5^4$。在 $1$ 至 $10000$ 中,去掉能被 $2$ 或 $5$ 整除的数,并加回被重复扣除的 $10$ 的倍数,得到 $10000-5000-2000+1000=4000$ 个。
|
||||
|
||||
##### 第9题
|
||||
|
||||
**答案:** D
|
||||
|
||||
**解析:** 前序顺序为“根、左、右”,中序顺序为“左、根、右”。要使两者相同,每个结点都不能有左子树;因此只含根结点或仅沿右孩子延伸的二叉树符合条件。
|
||||
|
||||
##### 第10题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** 全集的子集总数为 $S=2^{10}=1024$,含 $7$ 个元素的子集数为 $T=\binom{10}7=120$,因此 $T/S=120/1024=15/128$。
|
||||
|
||||
##### 第11题
|
||||
|
||||
**答案:** A
|
||||
|
||||
**解析:** 不能分享给 Jacob 或他的朋友,否则 Jacob 可能通过评论看到照片。Dana、Michael、Eve 均符合条件,对应 A。
|
||||
|
||||
##### 第12题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** `x & (x-1)` 每次恰好清除二进制表示中最右侧的一个 `1`。循环次数因此等于 `1` 的个数,所填语句为 `x &= x - 1`。
|
||||
|
||||
##### 第13题
|
||||
|
||||
**答案:** C
|
||||
|
||||
**解析:** 方案二每公里消耗更多,但每周最多安排 $3$ 次。安排 $3$ 次方案二、$2$ 次方案一,共跑 $3\times5+2\times3=21$ 公里,消耗 $3\times600+2\times300=2400$ 千卡,满足时间与里程限制。
|
||||
|
||||
##### 第14题
|
||||
|
||||
**答案:** A
|
||||
|
||||
**解析:** 含 $n$ 个顶点的连通无向图至少有 $n-1$ 条边;取一棵生成树即可达到这个最小值。因此 $10$ 个顶点可用 $9$ 条边构成连通图。
|
||||
|
||||
##### 第15题
|
||||
|
||||
**答案:** D
|
||||
|
||||
**解析:** Linux 可执行文件没有统一的默认扩展名;能否执行主要由文件格式及执行权限决定,因此前三项均不符合。
|
||||
|
||||
#### **二、阅读程序**
|
||||
|
||||
##### 程序(1)
|
||||
|
||||
**程序分析:** 递归满足 $\operatorname{luo}(n,m)=\sum_{0\le i<m,\ i\text{ 为偶数}}\operatorname{luo}(n-1,i)$,边界为 `n<=1` 或 `m<2`。`gu` 以 $-1$ 表示未计算,实现记忆化搜索。
|
||||
|
||||
**答案速查**
|
||||
|
||||
| 题号 | 16 | 17 | 18 | 19 | 20 | 21 |
|
||||
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
||||
| 答案 | × | √ | √ | √ | B | A |
|
||||
|
||||
###### 第16题
|
||||
|
||||
**答案:** ×(错误)
|
||||
|
||||
**解析:** 初次输入的 `m` 可以是奇数;递归产生的后续参数才由偶数循环变量 `i` 给出。
|
||||
|
||||
###### 第17题
|
||||
|
||||
**答案:** √(正确)
|
||||
|
||||
**解析:** 当 `m` 为偶数时,改为 `<=` 会多计算 `i=m` 这一项。例如 `luo(2,2)` 会由 $1$ 变为 $2$。
|
||||
|
||||
###### 第18题
|
||||
|
||||
**答案:** √(正确)
|
||||
|
||||
**解析:** 删除的是记忆化的读取和写入,递归式与边界不变,因此结果相同,但运行时间可能显著增加。
|
||||
|
||||
###### 第19题
|
||||
|
||||
**答案:** √(正确)
|
||||
|
||||
**解析:** 在题目的补码整数模型中,将每个字节置为 `255` 会使每个 `int` 的所有位均为 $1$,其值为 $-1$,与逐项赋值效果一致。
|
||||
|
||||
###### 第20题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** 输入为 `4 8`。由递推式可得 `luo(4,8)=luo(3,0)+luo(3,2)+luo(3,4)+luo(3,6)=1+1+2+4=8`。
|
||||
|
||||
###### 第21题
|
||||
|
||||
**答案:** A
|
||||
|
||||
**解析:** 记忆化后至多有 $O(nm)$ 个状态,每个状态枚举 $O(m)$ 个转移,时间复杂度为 $O(nm^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` 与年份之间有一个空格,不能省略。
|
||||
|
||||
#### **三、完善程序**
|
||||
|
||||
##### 程序(1)
|
||||
|
||||
**程序分析:** 程序从指定格子出发,按马的八种走法回溯。移动前同时检查是否在棋盘内、是否访问过;`tot` 记录已移动的步数,访问满整个棋盘时增加方案数。
|
||||
|
||||
**答案速查**
|
||||
|
||||
| 题号 | 28 | 29 | 30 | 31 | 32 |
|
||||
| :---: | :---: | :---: | :---: | :---: | :---: |
|
||||
| 答案 | C | B | D | A | D |
|
||||
|
||||
###### 第28题
|
||||
|
||||
**答案:** C(`x>=0 && y>=0 && x<r && y<c`)
|
||||
|
||||
**解析:** 合法下标应同时满足 `x>=0 && y>=0 && x<r && y<c`,四个条件缺一不可。
|
||||
|
||||
###### 第29题
|
||||
|
||||
**答案:** B(`check(x+wayr[i], y+wayc[i])`)
|
||||
|
||||
**解析:** 应检查移动后的目标位置,因此调用 `check(x+wayr[i],y+wayc[i])`。
|
||||
|
||||
###### 第30题
|
||||
|
||||
**答案:** D(`!mark[x+wayr[i]][y+wayc[i]]`)
|
||||
|
||||
**解析:** 目标格不能已被访问,故还需判断 `!mark[x+wayr[i]][y+wayc[i]]`。
|
||||
|
||||
###### 第31题
|
||||
|
||||
**答案:** A(`tot==r * c-1`)
|
||||
|
||||
**解析:** 起点已占一个格子,走满 $r\times c$ 个格子需再移动 $r*c-1$ 步,因此条件为 `tot==r*c-1`。
|
||||
|
||||
###### 第32题
|
||||
|
||||
**答案:** D(`x+wayr[i], y+wayc[i]`)
|
||||
|
||||
**解析:** 下一层递归的坐标应是当前坐标加上本次移动向量,即 `x+wayr[i],y+wayc[i]`。
|
||||
|
||||
##### 程序(2)
|
||||
|
||||
**程序分析:** 程序枚举大矩阵中所有可容纳小矩阵的左上角,逐元素比较是否完全相同,输出全部匹配位置;`haveAns` 记录是否存在至少一个匹配。
|
||||
|
||||
**答案速查**
|
||||
|
||||
| 题号 | 答案 |
|
||||
| :---: | :--- |
|
||||
| 33 | `cin >> b[i][j]` |
|
||||
| 34 | `m1-m2+1` |
|
||||
| 35 | `good = true` |
|
||||
| 36 | `m2` |
|
||||
| 37 | `haveAns = true` |
|
||||
|
||||
###### 第33题
|
||||
|
||||
**答案:** `cin >> b[i][j]`
|
||||
|
||||
**解析:** 读入第二个矩阵时,应把数据存入 `b[i][j]`。
|
||||
|
||||
###### 第34题
|
||||
|
||||
**答案:** `m1-m2+1`
|
||||
|
||||
**解析:** 小矩阵宽为 `m2`,放置的最后一列起点为 `m1-m2+1`。
|
||||
|
||||
###### 第35题
|
||||
|
||||
**答案:** `good = true`
|
||||
|
||||
**解析:** 开始检查新的位置时,先假定匹配,令 `good=true`,发现不等元素后再改为假。
|
||||
|
||||
###### 第36题
|
||||
|
||||
**答案:** `m2`
|
||||
|
||||
**解析:** 内层比较应遍历小矩阵全部 `m2` 列,因此上界为 `m2`。
|
||||
|
||||
###### 第37题
|
||||
|
||||
**答案:** `haveAns = true`
|
||||
|
||||
**解析:** 发现一个匹配后,需令 `haveAns=true`,以避免最后误输出不存在答案。
|
||||
|
||||
##### 程序(3)
|
||||
|
||||
**程序分析:** 程序扫描原字符串,把所有非数字字符依次复制到前面,用 `j` 记录保留字符数,最后只输出这 `j` 个字符,从而删除全部数字。
|
||||
|
||||
**答案速查**
|
||||
|
||||
| 题号 | 答案 |
|
||||
| :---: | :--- |
|
||||
| 38 | `\|\|` |
|
||||
| 39 | `j++` |
|
||||
| 40 | `j` |
|
||||
| 41 | `s[i]` |
|
||||
|
||||
###### 第38题
|
||||
|
||||
**答案:** `||`
|
||||
|
||||
**解析:** 不属于数字的条件是小于字符 `0` 或大于字符 `9`,应使用逻辑或运算符 `||`。
|
||||
|
||||
###### 第39题
|
||||
|
||||
**答案:** `j++`
|
||||
|
||||
**解析:** 写入一个保留字符后,下一个写入位置需向后移动,执行 `j++`。
|
||||
|
||||
###### 第40题
|
||||
|
||||
**答案:** `j`
|
||||
|
||||
**解析:** `j` 就是删除数字后保留下来的字符数,应作为函数返回值。
|
||||
|
||||
###### 第41题
|
||||
|
||||
**答案:** `s[i]`
|
||||
|
||||
**解析:** 保留字符已经依次存入 `s[0..len-1]`,输出时逐个访问 `s[i]`。
|
||||
Reference in new issue
Block a user