整理 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,334 @@
<center><font size="6"><b>CSP-J 初赛模拟卷(第 14 套)</b></font></center>
<center><font size="4"><b>参考答案与解析</b></font></center>
---
#### **一、单项选择题**
**答案速查**
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| 答案 | A | D | D | A | C | C | D | C |
| 题号 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| 答案 | B | A | B | B | B | A | B |
**逐题解析**
##### 第1题
**答案:** A
**解析:** 一个字节为 $8$ 位,因此 $32$ 位整型变量占 $32/8=4$ 个字节。
##### 第2题
**答案:** D
**解析:** `00100100` 和 `00010101` 分别表示 $36$ 和 $21$,相加为 $57$,二进制结果为 `00111001`。
##### 第3题
**答案:** D
**解析:** 汇编语言仍用于与硬件密切相关的程序和特定性能要求的场景,并未被完全淘汰,因此 D 的说法错误。
##### 第4题
**答案:** A
**解析:** FTP 是文件传输协议,用于在网络中的计算机之间传输文件。
##### 第5题
**答案:** C
**解析:** 只含一种字母的不同非空子串有 $3\times3=9$ 个;跨越 `A/B` 或 `B/C` 边界的各有 $3\times3=9$ 个;同时含 `A、B、C` 的有 $3\times3=9$ 个。共 $9+9+9+9=36$ 个。
##### 第6题
**答案:** C
**解析:** 对非负的 `x`,先乘 $100$,加 $0.5$ 后转为整数以完成四舍五入,再除以 `100.0` 恢复数量级,对应选项 C。
##### 第7题
**答案:** D
**解析:** 补码 `11111001` 的符号位为 $1$,表示负数;逐位取反再加一,得其绝对值 `00000111`,即 $7$。所以原码为 `10000111`。
##### 第8题
**答案:** C
**解析:** 欧几里得算法利用 $\gcd(a,b)=\gcd(b,a\bmod b)$,当 `b==0` 时返回 `a`,计算的是最大公约数。
##### 第9题
**答案:** B
**解析:** 将三个盘子中的苹果数按从大到小排列,可得 $(7,0,0)$、$(6,1,0)$、$(5,2,0)$、$(5,1,1)$、$(4,3,0)$、$(4,2,1)$、$(3,3,1)$、$(3,2,2)$,共 $8$ 种。
##### 第10题
**答案:** A
**解析:** 各层最多分别有 $1,2,4,\ldots,2^{n-1}$ 个结点,求和得到 $2^n-1$。
##### 第11题
**答案:** B
**解析:** 无向完全图中,每两个不同顶点之间恰有一条边,因此边数为 $\binom72=7\times6/2=21$。
##### 第12题
**答案:** B
**解析:** 根的高度为 $1$ 时,高度为 $h$ 的完全二叉树满足 $2^{h-1}\le n\le2^h-1$。由于 $32\le61\le63$,所以高度为 $6$。
##### 第13题
**答案:** B
**解析:** 元素 $7$ 与后面的 $2,3,5,4$ 形成 $4$ 个逆序对,元素 $5$ 与 $4$ 再形成 $1$ 个,合计 $5$ 个。
##### 第14题
**答案:** A
**解析:** 若 `L[k]` 同时大于两侧元素,应直接返回峰顶值,对应 c;若仍处于上升段,应搜索右半部分,对应 a;否则搜索左半部分,对应 b。顺序为 `c、a、b`。
##### 第15题
**答案:** B
**解析:** 广度优先搜索按距起点的层次逐层扩展,先发现的结点先被扩展,因此通常使用先进先出的队列。
#### **二、阅读程序**
##### 程序(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)
**程序分析:** 当 $k>1$ 时,数组 `d` 模拟 $k$ 进制计数,`len` 为有效位数,`ans` 记录进位次数。因此 $\mathrm{ans}=\sum_{t\ge1}\lfloor n/k^t\rfloor$。当 $k=1$ 时应直接分析程序,此时每轮恰有一次进位,最终 `ans=n`。
**答案速查**
| 题号 | 22 | 23 | 24 | 25 | 26 | 27 |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| 答案 | × | × | √ | D | B | D |
###### 第22题
**答案:** ×(错误)
**解析:** 当 $k=1$ 时,第一轮使 `len` 变为 $2$,随后不再增加,因此 `len` 并不总等于 $n$。
###### 第23题
**答案:** ×(错误)
**解析:** 取 $n=1,k=2$,最终 `len=1`,并不小于 $n$,即可构成反例。
###### 第24题
**答案:** √(正确)
**解析:** `len` 是 $n$ 的 $k$ 进制位数,满足 $k^{\mathrm{len}-1}\le n<k^{\mathrm{len}}$,因此该不等式成立。
###### 第25题
**答案:** D
**解析:** $k=1$ 时每次外层循环使 `ans` 加一,执行 $n$ 次后结果为 $n=10^{15}$。
###### 第26题
**答案:** B
**解析:** 进位总数为 $3^{29}+3^{28}+\cdots+1=(3^{30}-1)/2$。
###### 第27题
**答案:** D
**解析:** 按公式依次累加 $\lfloor n/10\rfloor、\lfloor n/10^2\rfloor$ 等,得到 $11112222444453$,对应 D。
##### 程序(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)
**程序分析:** 程序输出 2015 年指定月份的月历。`offset` 表示当月第一天相对星期日的偏移,先按此前月份天数逐月更新,再按每七天换行。
**答案速查**
| 题号 | 答案 |
| :---: | :--- |
| 34 | `offset = 4` |
| 35 | `(offset + dayNum[i]) % 7` |
| 36 | `dayNum[m]` |
| 37 | `i` |
| 38 | `(offset + i) % 7` |
###### 第34题
**答案:** `offset = 4`
**解析:** 2015 年 1 月 1 日为星期四;以星期日为 $0$,初始偏移为 $4$。
###### 第35题
**答案:** `(offset + dayNum[i]) % 7`
**解析:** 跨过第 `i` 个月后,偏移增加该月天数并对 $7$ 取模,即 `(offset+dayNum[i])%7`。
###### 第36题
**答案:** `dayNum[m]`
**解析:** 应依次输出指定月份的全部日期,因此上界为 `dayNum[m]`。
###### 第37题
**答案:** `i`
**解析:** 循环变量 `i` 就是当前日期,直接输出 `i`。
###### 第38题
**答案:** `(offset + i) % 7`
**解析:** 当 `offset+i` 恰为 $7$ 的倍数时已输出到星期六,应换行,因此判断 `(offset+i)%7` 是否为零。
##### 程序(2)
**程序分析:** 递归把一个 $2^n\times2^n$ 的矩阵分成四个子矩阵,左上、右上、左下保持当前值 `t`,右下取反。到单个元素时写入 `t`。初始元素为 $0$。
**答案速查**
| 题号 | 39 | 40 | 41 | 42 | 43 |
| :---: | :---: | :---: | :---: | :---: | :---: |
| 答案 | C | D | B | B | B |
###### 第39题
**答案:** C(`t`)
**解析:** `n==0` 时对应单个元素,其值就是参数 `t`。
###### 第40题
**答案:** D(`x, y`)
**解析:** 左上子矩阵的左上角不变,应继续使用坐标 `x,y`。
###### 第41题
**答案:** B(`x + step, y + step`)
**解析:** 右下子矩阵的行、列起点都需加上 `step`,并由已有参数 `!t` 实现取反。
###### 第42题
**答案:** B(`n, 0`)
**解析:** 初始调用需递归 $n$ 层,且原始元素为 $0$,因此传入 `n,0`。
###### 第43题
**答案:** B(`1<<n`)
**解析:** 变换 $n$ 次后的边长为 $2^n$,对应位移表达式 `1<<n`。