整理 NOI 初赛资料目录并标准化 CSP-J 模拟卷

- 将18套模拟卷分离为试题和答案解析,补齐并规范逐题解析
- 补充SVG图示,统一试题排版并导出打印PDF
- 重整初赛专题训练与复习资料目录,清理旧版源文件
This commit is contained in:
xiaolinquan committed 2026-11-06 17:50:51 +08:00
1 parent fe5c7ffd58
commit 0af92a68d9
216 files changed
+12743 -1272

No files matched your search

@@ -0,0 +1,338 @@
<center><font size="6"><b>CSP-J 初赛模拟卷(第 11 套)</b></font></center>
<center><font size="4"><b>参考答案与解析</b></font></center>
---
#### **一、单项选择题**
**答案速查**
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| 答案 | D | C | B | C | A | D | A | C |
| 题号 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| 答案 | A | D | C | D | B | A、B、B、B | A |
**逐题解析**
##### 第1题
**答案:** D
**解析:** 按题目采用的 $1024$ 进位约定,$1\ \mathrm{TB}=1024^4\ \mathrm{B}=2^{40}\ \mathrm{B}$。
##### 第2题
**答案:** C
**解析:** PENTIUM(奔腾)、酷睿和赛扬均为 CPU 的产品系列或型号名称。
##### 第3题
**答案:** B
**解析:** 全国青少年计算机程序设计竞赛(NOI)由中国计算机学会于 1984 年创办。
##### 第4题
**答案:** C
**解析:** Photoshop 是图像编辑应用软件;Windows、DOS 和 NOI Linux 均属于操作系统。
##### 第5题
**答案:** A
**解析:** FTP 是文件传输协议,用于在网络中的计算机之间传输文件。
##### 第6题
**答案:** D
**解析:** 蓝牙、Wi-Fi 和 GPRS 均属于无线通信技术;本题中的以太网指常见的有线局域网技术。
##### 第7题
**答案:** A
**解析:** 图灵奖用于表彰对计算机科学作出重要贡献的人物,是计算机科学领域的最高荣誉之一。
##### 第8题
**答案:** C
**解析:** $(101.11)_2=2^2+2^0+2^{-1}+2^{-2}=4+1+0.5+0.25=5.75$。
##### 第9题
**答案:** A
**解析:** 先给每个班分配一个名额,再将剩余 $3$ 个相同名额分给 $7$ 个不同班级。由隔板法,方案数为 $\binom{3+7-1}{7-1}=\binom96=84$。
##### 第10题
**答案:** D
**解析:** 8 位无符号整数的范围是 $0$ 至 $2^8-1=255$。选项中能表示的数为 $133$ 和 $199$,其中较大的是 $199$。
##### 第11题
**答案:** C
**解析:** 三人的选择相互独立,方案总数为 $\binom42\binom43\binom43=6\times4\times4=96$。
##### 第12题
**答案:** D
**解析:** 拓扑序列的第一个顶点不能有尚未排列的前驱,因此其原始入度必须为 $0$。有环图不存在拓扑序,拓扑序也不一定唯一;原始入度的大小不能决定所有顶点的排列先后。
##### 第13题
**答案:** B
**解析:** 因特网源于计算机通信、分组交换和网络协议等技术的发展,并不是通过研究蜘蛛网而发明的,因此 B 的说法错误。
##### 第14题
**答案:** (1)A;(2)B;(3)B;(4)B。
**解析:** 丙去了,由③知丁没去;由②的逆否命题知乙没去。结合④及丙去了,可推出甲去了。再结合①和乙没去,可推出周末没下雨。因此四空依次为 A、B、B、B。
##### 第15题
**答案:** A
**解析:** 搜索过程中尝试构造解,在当前选择不能满足条件时撤销该选择并返回上一步继续尝试,这正是回溯法的基本过程。
#### **二、阅读程序**
##### 程序(1)
**程序分析:** 按题目采用的 32 位补码整数模型,`f(x)` 统计二进制表示中 `1` 的个数,`g(x)=x&(-x)` 提取最低位的 `1` 所代表的数值;程序输出二者之和。
**答案速查**
| 题号 | 16 | 17 | 18 | 19 | 20 | 21 |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| 答案 | × | × | × | √ | × | B |
###### 第16题
**答案:** ×(错误)
**解析:** 数组 `a[1000]` 的合法下标是 $0$ 至 $999$。输入 $n=1001$ 时会访问 `a[1000]`,发生越界。
###### 第17题
**答案:** ×(错误)
**解析:** 零也是反例:`f(0)` 的循环一次也不执行,`g(0)=0`,程序不会因此陷入死循环。
###### 第18题
**答案:** ×(错误)
**解析:** 样例中的最后一个数为 $10$,其二进制为 `1010`,故 `f(10)=2`、`g(10)=2`,最后应输出 $4$,而不是 $5$。
###### 第19题
**答案:** √(正确)
**解析:** $511998$ 的二进制表示有 $16$ 个 `1`,最低位的 `1` 代表 $2$,因此输出 $16+2=18$。
###### 第20题
**答案:** ×(错误)
**解析:** 将 `g` 的定义移到 `main` 后面时,需先在调用前提供函数声明;否则编译器在调用处尚不知道 `g`。
###### 第21题
**答案:** B
**解析:** 32 位补码下,$-65536$ 的二进制表示有 $16$ 个 `1`,最低位的 `1` 为 $65536$,输出 $65552$;$2147483647=2^{31}-1$,输出 $31+1=32$。
##### 程序(2)
**程序分析:** `a[x]=y` 与 `b[y]=x` 维护两侧结点的一一配对,冲突配对会先解除。最后分别统计两数组中的零元素;若当前有 $t$ 对配对,输出为 $2n-2t$。
**答案速查**
| 题号 | 22 | 23 | 24 | 25 | 26 | 27 |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| 答案 | √ | × | × | × | A | A |
###### 第22题
**答案:** √(正确)
**解析:** 第一对正编号结点必定可以配对,之后的更新不会使配对总数降为零,因此 $m>0$ 时最终至少有一对,输出小于 $2n$。
###### 第23题
**答案:** ×(错误)
**解析:** 最终答案为偶数,但某一次执行 `++ans` 后的中间值可以是奇数。例如仅配对 `(1,2)` 时,扫描 `i=1` 就可能使 `ans` 变为 $1$。
###### 第24题
**答案:** ×(错误)
**解析:** 例如输入配对 `(1,2)`、`(3,1)` 后,`a[1]=2`、`b[1]=3`,二者可以同时大于零。
###### 第25题
**答案:** ×(错误)
**解析:** 例如先后输入 `(1,2)`、`(1,3)`,每次均有 `x<y`,但第二次仍须解除旧配对,因此相应语句会执行。
###### 第26题
**答案:** A
**解析:** 两侧编号分别互不相同时,所有 $m$ 对都能保留,零元素总数为 $2(n-m)=2n-2m$。
###### 第27题
**答案:** A
**解析:** 所有 `y` 相同时,最终只能保留其中一对配对,故零元素总数为 $2n-2$。
##### 程序(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)
**程序分析:** 程序在整数值域中二分中位数。对于候选 `mid`,统计严格大于它的元素个数;若多于半数,则中位数更大,否则中位数不超过当前值。
**答案速查**
| 题号 | 答案 |
| :---: | :--- |
| 34 | `rbound > lbound` |
| 35 | `count = 0` |
| 36 | `x[i] > mid` |
| 37 | `count++` |
| 38 | `rbound = mid` |
###### 第34题
**答案:** `rbound > lbound`
**解析:** 当左右边界尚未重合时继续二分,条件为 `rbound>lbound`。
###### 第35题
**答案:** `count = 0`
**解析:** 每次更换候选值后,应重新统计,令 `count=0`。
###### 第36题
**答案:** `x[i] > mid`
**解析:** 应统计严格大于 `mid` 的数,即 `x[i]>mid`。若用 `>=`,例如序列 `1,2,3` 会错误地把答案推到 $3$。
###### 第37题
**答案:** `count++`
**解析:** 每发现一个满足条件的元素,就使计数加一,执行 `count++`。
###### 第38题
**答案:** `rbound = mid`
**解析:** 严格大于 `mid` 的元素不超过一半时,中位数至多为 `mid`,应执行 `rbound=mid`。
##### 程序(2)
**程序分析:** 递归函数为每个子树维护允许的开区间 `(lower_bound,upper_bound)`。当前值必须落在该区间中;左子树上界改为当前值,右子树下界改为当前值,从而验证严格二叉搜索树。
**答案速查**
| 题号 | 答案 |
| :---: | :--- |
| 39 | `cur < upper_bound` |
| 40 | `a[root].right_child` |
| 41 | `cur` |
| 42 | `upper_bound` |
| 43 | `1` |
###### 第39题
**答案:** `cur < upper_bound`
**解析:** 已检查 `cur>lower_bound`,还需检查 `cur<upper_bound`,保证当前值满足上下界限制。
###### 第40题
**答案:** `a[root].right_child`
**解析:** 第二次递归应检查右子树,故根下标为 `a[root].right_child`。
###### 第41题
**答案:** `cur`
**解析:** 右子树中的所有值应大于当前值,因此下界传入 `cur`。
###### 第42题
**答案:** `upper_bound`
**解析:** 右子树的上界仍受祖先结点限制,应继续传入 `upper_bound`。
###### 第43题
**答案:** `1`
**解析:** 按输入约定,第一个结点是根,因此初次调用的根下标为 $1$。