整理 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,330 @@
<center><font size="6"><b>CSP-J 初赛模拟卷(第 17 套)</b></font></center>
<center><font size="4"><b>参考答案与解析</b></font></center>
---
#### **一、单项选择题**
**答案速查**
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| 答案 | A | B | C | B | A | C | A | B |
| 题号 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| 答案 | C | B | D | B | A | C | D |
**逐题解析**
##### 第1题
**答案:** A
**解析:** $114$ 的 8 位二进制为 `01110010`。逐位取反得到 `10001101`,再加一得到 $-114$ 的补码 `10001110`。
##### 第2题
**答案:** B
**解析:** Gitee 是代码托管与协作平台,不是题目所描述的在线算法判题系统;其余三个网站均提供在线判题功能。
##### 第3题
**答案:** C
**解析:** 按题目的字母编号规则,`B=2`、`Y=25`、`T=20`,因此 `BYT` 对应 $2\times26^2+25\times26+20=2022$。
##### 第4题
**答案:** B
**解析:** 每个像素占 $24/8=3$ 字节,总空间为 $4096\times2160\times3=26542080$ 字节,约为 $25.31\ \mathrm{MB}$,最接近 $25\ \mathrm{MB}$。
##### 第5题
**答案:** A
**解析:** 快速选择利用划分操作,仅继续处理包含第 $k$ 大元素的那一侧,平均时间复杂度为 $O(n)$;比较所有元素本身也需要线性级别的时间。
##### 第6题
**答案:** C
**解析:** ②是树的唯一路径性质,③可由树至少存在叶结点得到。①还需要连通等条件,仅有顶点数和边数不足以保证为树;④与树无环的性质矛盾。因此正确的是②③。
##### 第7题
**答案:** A
**解析:** 最小总代价与哈夫曼合并代价相同。依次合并 $5+10=15$、$13+14=27$、$15+27=42$,总代价为 $15+27+42=84$。
##### 第8题
**答案:** B
**解析:** 由两种遍历还原二叉树后,根 `H` 的右孩子为 `D`,`D` 的左孩子为 `A`,`A` 的左右孩子为 `F、E`。其下标依次为 $1,3,6,12,13$,因此最大下标为 $13$。
##### 第9题
**答案:** C
**解析:** 代入 `a=1,b=0,c=1`,A、B 的值均为 $0$,D 的值为 $2$。C 中 `!c` 为 $0$,内层逻辑与为 $0$,再取逻辑非得到 $1$。
##### 第10题
**答案:** B
**解析:** 最理想情况下,每次要找的元素都位于链表表头,只需访问一个已有结点。因此 $k$ 次操作至少访问 $k$ 次已有结点。
##### 第11题
**答案:** D
**解析:** 按 C 班派出人数 $0,1,2,3$ 分类,满足 A 班至多 $5$ 人、B 班至多 $4$ 人及总人数为 $6$ 的方案数依次为 $4,5,5,4$,合计 $18$ 种。
##### 第12题
**答案:** B
**解析:** 直接插入排序在一般及最坏情况下需要逐个移动、比较前面的元素,总次数可达到 $1+2+\cdots+(n-1)$,时间复杂度为 $O(n^2)$。
##### 第13题
**答案:** A
**解析:** `rand()%(b-a)` 的取值范围为 $0$ 至 $b-a-1$,再加上 `a`,即得到 $a$ 至 $b-1$,符合左闭右开的区间 $[a,b)$。
##### 第14题
**答案:** C
**解析:** $7$ 个顶点的完全图有 $\binom72=21$ 条边。森林至多保留 $7-1=6$ 条边,因此至少删去 $21-6=15$ 条边,保留一棵生成树即可达到。
##### 第15题
**答案:** D
**解析:** 2020 年举办的是第 $37$ 届全国青少年信息学奥林匹克竞赛,举办地为湖南长沙,对应 D。
#### **二、阅读程序**
##### 程序(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)
**程序分析:** 程序先用 Floyd 算法求最短路,再枚举一对顶点,将其间距离设为零并更新最短路,最后取所有无序顶点对距离之和的最小值。
**答案速查**
| 题号 | 22 | 23 | 24 | 25 | 26 | 27 |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| 答案 | × | × | √ | √ | A | A |
###### 第22题
**答案:** ×(错误)
**解析:** Floyd 算法需要把中转顶点 `k` 放在最外层,保证阶段性状态含义;改为 `i,j,k` 后不再具有这一保证,结果可能改变。
###### 第23题
**答案:** ×(错误)
**解析:** 读入边需要 $O(m)$ 时间,后续枚举和更新需要 $O(n^4)$ 时间,整体可写为 $O(m+n^4)$,不能说所有运行步骤都与 $m$ 无关。
###### 第24题
**答案:** √(正确)
**解析:** 在允许的图规模和边权下,最优距离总和也可能大于 $10^7$。若把 `ans` 初始化为该值,取最小值时就可能保留错误的初值。
###### 第25题
**答案:** √(正确)
**解析:** 两次更新分别允许经由顶点 `i` 和 `j`,最终允许的中转顶点集合相同,因此交换这两次更新的顺序不影响结果。
###### 第26题
**答案:** A
**解析:** 对给定图枚举置零的顶点对并计算更新后的无序点对最短路之和,最小结果为 $14$。
###### 第27题
**答案:** A
**解析:** 代码使用“枚举中转点并松弛任意两点距离”的 Floyd 算法。
##### 程序(3)
**程序分析:** `A[i][j]` 由杨辉三角递推得到组合数 $\binom ij$ 对 `MOD` 取模的值;`sum` 为该数组的二维前缀和,同样对 `MOD` 取模。
**答案速查**
| 题号 | 28 | 29 | 30 | 31 | 32 | 33 |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| 答案 | × | × | × | √ | C | C |
###### 第28题
**答案:** ×(错误)
**解析:** 对角线元素为 $A[i][i]=\binom ii=1$,并不是零。
###### 第29题
**答案:** ×(错误)
**解析:** 该递推计算的是组合数而非排列数,且保存的是组合数对 `MOD` 取模后的值。
###### 第30题
**答案:** ×(错误)
**解析:** 前缀和取模后可能从较大的值回绕到较小值,因此不能保证所述单调关系。
###### 第31题
**答案:** √(正确)
**解析:** 在取模前额外加一个 `MOD`,不会改变对 `MOD` 取模后的余数。
###### 第32题
**答案:** C
**解析:** 前 $10$ 行的最大组合数为 $\binom{10}5=252$,这些值均小于模数,因此无需考虑取模改变数值。
###### 第33题
**答案:** C
**解析:** 查询为 `sum[5][3]`,即将前 $5$ 行、前 $3$ 列的组合数求和,结果为 $1+3+7+14+25=50$。
#### **三、完善程序**
##### 程序(1)
**程序分析:** 将每名射手指向目标构成出度为 $1$ 的有向图。程序先处理入度为零的树枝,再处理剩余有向环;`w=1` 表示计入存活人数,并沿目标方向交替处理状态。
**答案速查**
| 题号 | 34 | 35 | 36 | 37 | 38 |
| :---: | :---: | :---: | :---: | :---: | :---: |
| 答案 | C | D | D | A | C |
###### 第34题
**答案:** C(`in[a[cur]]--;`)
**解析:** 处理当前结点后,应删除它指向目标的那条边,使目标入度减一,即 `in[a[cur]]--`。
###### 第35题
**答案:** D(`in[a[cur]]==0||w==1`)
**解析:** 目标入度降为零时可继续处理;当前结点状态为 `w==1` 时也需继续处理其目标。因此条件为 `in[a[cur]]==0 || w==1`;用位或连接两个布尔值时结果也相同。
###### 第36题
**答案:** D(`1-w`)
**解析:** 当前结点与目标结点的状态交替,因此下一层参数为 `1-w`。
###### 第37题
**答案:** A(`dfs(i,1)`)
**解析:** 入度为零的射手可先保留,初始状态取 $1$,故调用 `dfs(i,1)`。
###### 第38题
**答案:** C(`!vis[i]`)
**解析:** 处理完树枝后,尚未访问的结点位于有向环中,应以 `!vis[i]` 判断是否开始处理该环。
##### 程序(2)
**程序分析:** 程序从后向前枚举保留的后缀,维护后缀总分与最低分,删除最低分后计算平均分,记录达到最大平均分的前缀删除长度。
**答案速查**
| 题号 | 39 | 40 | 41 | 42 | 43 |
| :---: | :---: | :---: | :---: | :---: | :---: |
| 答案 | C | B | D | C | B |
###### 第39题
**答案:** C(`sum=s[n]`)
**解析:** 开始枚举前,后缀只有最后一项,应令 `sum=s[n]`。
###### 第40题
**答案:** B(`sum+=s[i]`)
**解析:** 将第 `i` 项纳入当前后缀后,需要执行 `sum+=s[i]`。
###### 第41题
**答案:** D(`(double)(sum-minScore)/(n-i)`)
**解析:** 后缀含 $n-i+1$ 项,去掉最低分后剩 $n-i$ 项,平均分为 `(double)(sum-minScore)/(n-i)`。
###### 第42题
**答案:** C(`cnt=1;k[cnt]=i-1;`)
**解析:** 发现更优平均分时,应清空此前候选,把当前删除的前缀长度 `i-1` 作为首个结果保存。
###### 第43题
**答案:** B(`k[++cnt]=i-1;`)
**解析:** 平均分相同时追加当前答案,执行 `k[++cnt]=i-1`,保留所有达到最优值的删除长度。