整理 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,338 @@
|
||||
<center><font size="6"><b>CSP-J 初赛模拟卷(第 13 套)</b></font></center>
|
||||
<center><font size="4"><b>参考答案与解析</b></font></center>
|
||||
|
||||
---
|
||||
|
||||
#### **一、单项选择题**
|
||||
|
||||
**答案速查**
|
||||
|
||||
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|
||||
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
||||
| 答案 | C | C | B | C | A | D | C | C |
|
||||
|
||||
| 题号 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|
||||
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
||||
| 答案 | C | C | D | B | C | D | A |
|
||||
|
||||
**逐题解析**
|
||||
|
||||
##### 第1题
|
||||
|
||||
**答案:** C
|
||||
|
||||
**解析:** ATM 密码验证依据用户掌握的密码信息,不利用人体的生理或行为特征,因此不属于生物特征识别。
|
||||
|
||||
##### 第2题
|
||||
|
||||
**答案:** C
|
||||
|
||||
**解析:** 每 $4$ 位二进制数对应 $1$ 位十六进制数,因此 $100$ 位二进制正整数需 $\lceil100/4\rceil=25$ 位十六进制数表示。
|
||||
|
||||
##### 第3题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** C++ 支持类、对象、继承及多态等机制,是支持面向对象程序设计的高级语言。
|
||||
|
||||
##### 第4题
|
||||
|
||||
**答案:** C
|
||||
|
||||
**解析:** Wi-Fi 主要用于无线局域网,使终端在较小范围内通过无线方式接入网络。
|
||||
|
||||
##### 第5题
|
||||
|
||||
**答案:** A
|
||||
|
||||
**解析:** 选项 A 可化为 $P\lor[\neg P\land(Q\lor\neg Q)]=P\lor\neg P$,其值恒为真。
|
||||
|
||||
##### 第6题
|
||||
|
||||
**答案:** D
|
||||
|
||||
**解析:** 降低浮点数精度时,舍入可能使数值变大、变小或保持不变,但不会把正数变为负数,或把负数变为正数。
|
||||
|
||||
##### 第7题
|
||||
|
||||
**答案:** C
|
||||
|
||||
**解析:** 前缀表达式对应 $3+2\times(5+12)$,结果为 $3+34=37$。
|
||||
|
||||
##### 第8题
|
||||
|
||||
**答案:** C
|
||||
|
||||
**解析:** 图灵奖是计算机科学领域的最高荣誉之一,本题对应选项 C。
|
||||
|
||||
##### 第9题
|
||||
|
||||
**答案:** C
|
||||
|
||||
**解析:** 三人的选择相互独立,方案总数为 $\binom42\binom43\binom43=6\times4\times4=96$。
|
||||
|
||||
##### 第10题
|
||||
|
||||
**答案:** C
|
||||
|
||||
**解析:** 若先序遍历为 `ACB`,则根为 `A`。由中序遍历 `BAC` 可知 `B` 在左子树、`C` 在右子树,先序遍历必须先访问 `B` 再访问 `C`,与 `ACB` 矛盾。
|
||||
|
||||
##### 第11题
|
||||
|
||||
**答案:** D
|
||||
|
||||
**解析:** 选项 D 对关键字 $2,6,10,17$ 分别得到地址 $1,2,3,4$,互不相同,因此不会产生冲突。
|
||||
|
||||
##### 第12题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** 先令 `s->next=hs`,将新结点接到原栈顶之前;再令 `hs=s`,使栈顶指针指向新结点。
|
||||
|
||||
##### 第13题
|
||||
|
||||
**答案:** C
|
||||
|
||||
**解析:** 逆序排列的 $5$ 个数共有 $\binom52=10$ 个逆序对。冒泡排序每次相邻交换恰好减少一个逆序对,因此需要 $10$ 次交换。
|
||||
|
||||
##### 第14题
|
||||
|
||||
**答案:** D
|
||||
|
||||
**解析:** 最坏情况下,两数组的元素交错出现。在已经确定前 $2n-1$ 个元素后,剩余最后一个元素可直接放入结果,因此最坏比较次数为 $2n-1$。
|
||||
|
||||
##### 第15题
|
||||
|
||||
**答案:** A
|
||||
|
||||
**解析:** $A_1$ 的未访问邻接点为 $A_3$,深度优先搜索不能在访问 $A_1$ 后跳过 $A_3$ 而先访问 $A_2$,因此 A 不可能。
|
||||
|
||||
#### **二、阅读程序**
|
||||
|
||||
##### 程序(1)
|
||||
|
||||
**程序分析:** 程序枚举字符串长度 $n$ 的所有正因数 $i$,检查下标为 `i-1` 的字符,并对满足 `c>='a'` 的字符进行减去大小写编码差的转换。可能被修改的位置数等于 $n$ 的正因数个数。
|
||||
|
||||
**答案速查**
|
||||
|
||||
| 题号 | 16 | 17 | 18 | 19 | 20 | 21 |
|
||||
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
||||
| 答案 | × | √ | × | √ | B | B |
|
||||
|
||||
###### 第16题
|
||||
|
||||
**答案:** ×(错误)
|
||||
|
||||
**解析:** `scanf("%s",st)` 可以读取不含空白的数字、标点等字符,并不限于大小写字母。
|
||||
|
||||
###### 第17题
|
||||
|
||||
**答案:** √(正确)
|
||||
|
||||
**解析:** 当 `i=0` 时,第一次计算 `n%i` 就会出现除数为零的问题,因此程序不能正常执行。
|
||||
|
||||
###### 第18题
|
||||
|
||||
**答案:** ×(错误)
|
||||
|
||||
**解析:** 将循环上界缩小到 $\sqrt n$ 后,会漏掉大于 $\sqrt n$ 的因数对应的位置,因此输出可能改变。
|
||||
|
||||
###### 第19题
|
||||
|
||||
**答案:** √(正确)
|
||||
|
||||
**解析:** 大写字母的编码均小于小写字母 `a`,不满足修改条件,因此字符串保持不变。
|
||||
|
||||
###### 第20题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** $18$ 的正因数为 $1,2,3,6,9,18$,共 $6$ 个;让这些位置都为小写字母即可使 $6$ 个字符发生变化。
|
||||
|
||||
###### 第21题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** $100000=2^5\times5^5$,正因数个数为 $(5+1)(5+1)=36$。其余三个长度的因数个数分别为 $9、1、8$。
|
||||
|
||||
##### 程序(2)
|
||||
|
||||
**程序分析:** 程序模拟长除法,`b` 保存商的各位,`a` 保存待除数(余数乘十)。若待除数重复,就找到了循环节;若余数变为零,则小数终止。
|
||||
|
||||
**答案速查**
|
||||
|
||||
| 题号 | 22 | 23 | 24 | 25 | 26 | 27 |
|
||||
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
||||
| 答案 | × | √ | √ | × | C | D |
|
||||
|
||||
###### 第22题
|
||||
|
||||
**答案:** ×(错误)
|
||||
|
||||
**解析:** 当 `n==m` 且 `m!=0` 时,整数部分为 $1$、余数为零,可以正常结束,不要求两个输入不同。
|
||||
|
||||
###### 第23题
|
||||
|
||||
**答案:** √(正确)
|
||||
|
||||
**解析:** 程序包含整数除法和取模,除数 `m` 必须非零。
|
||||
|
||||
###### 第24题
|
||||
|
||||
**答案:** √(正确)
|
||||
|
||||
**解析:** 循环可因检测到重复待除数而执行 `break`,也可因余数为零而使 `do...while` 条件不成立,共有两种退出途径。
|
||||
|
||||
###### 第25题
|
||||
|
||||
**答案:** ×(错误)
|
||||
|
||||
**解析:** 例如输入 `1 3` 时,会出现待除数 $10$,已经大于初始的 $n=1$,因此该限制不成立。
|
||||
|
||||
###### 第26题
|
||||
|
||||
**答案:** C
|
||||
|
||||
**解析:** $11/8=1.375$,是有限小数,不需循环节括号,因此输出 `1.375`。
|
||||
|
||||
###### 第27题
|
||||
|
||||
**答案:** D
|
||||
|
||||
**解析:** 输入为 `5 13`,$5/13=0.\overline{384615}$,输出为 `0.(384615)`,对应 D。
|
||||
|
||||
##### 程序(3)
|
||||
|
||||
**程序分析:** 程序随机选择枢轴,划分比枢轴小与不小的元素,并只递归进入包含第 $k$ 小值的部分,是快速选择算法。输入顺序不影响随机枢轴下的平均线性复杂度,但最坏情况仍可退化。
|
||||
|
||||
**答案速查**
|
||||
|
||||
| 题号 | 28 | 29 | 30 | 31 | 32 | 33 |
|
||||
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
||||
| 答案 | × | √ | B | B | A | D |
|
||||
|
||||
###### 第28题
|
||||
|
||||
**答案:** ×(错误)
|
||||
|
||||
**解析:** `rand()%(R-L+1)+L` 的取值范围为闭区间 $[L,R]$,包括左端点 `L`。
|
||||
|
||||
###### 第29题
|
||||
|
||||
**答案:** √(正确)
|
||||
|
||||
**解析:** 两个指针相遇后有 `a==b`,相应位置的 `d[a]` 与 `d[b]` 相同,替换不会改变该判断。
|
||||
|
||||
###### 第30题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** 随机枢轴使平均递归规模按比例缩小,单次划分为线性时间,平均总时间为 $O(n)$。
|
||||
|
||||
###### 第31题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** 随机选择枢轴后,初始数组严格递减也不会使平均复杂度改变,仍为 $O(n)$。
|
||||
|
||||
###### 第32题
|
||||
|
||||
**答案:** A
|
||||
|
||||
**解析:** 平均复杂度为 $O(n)$;最坏情况下每次仅排除一个元素,总代价为 $n+(n-1)+\cdots+1=O(n^2)$。
|
||||
|
||||
###### 第33题
|
||||
|
||||
**答案:** D
|
||||
|
||||
**解析:** 全部元素相等时,划分不能有效均分。求第 $n$ 小值会逐次缩短一个元素,时间复杂度退化为 $O(n^2)$。
|
||||
|
||||
#### **三、完善程序**
|
||||
|
||||
##### 程序(1)
|
||||
|
||||
**程序分析:** 目标是把前 $p$ 个元素整体移到末尾,保持两部分各自顺序。第一种方法借助辅助数组直接映射位置;第二种方法反复把后半部分当前元素插到前面。
|
||||
|
||||
**答案速查**
|
||||
|
||||
| 题号 | 答案 |
|
||||
| :---: | :--- |
|
||||
| 34 | `n-p+i` |
|
||||
| 35 | `a[i]` |
|
||||
| 36 | `n` |
|
||||
| 37 | `i-p+1` |
|
||||
| 38 | `a[i-p]` |
|
||||
|
||||
###### 第34题
|
||||
|
||||
**答案:** `n-p+i`
|
||||
|
||||
**解析:** 前 $p$ 个元素应放到辅助数组的最后 $p$ 个位置,第 `i` 项的新位置为 `n-p+i`。
|
||||
|
||||
###### 第35题
|
||||
|
||||
**答案:** `a[i]`
|
||||
|
||||
**解析:** 后半段第 `i` 项应复制原数组当前元素 `a[i]`,并放入 `b[i-p]`。
|
||||
|
||||
###### 第36题
|
||||
|
||||
**答案:** `n`
|
||||
|
||||
**解析:** 辅助数组填完后,应把全部 $n$ 项复制回原数组,因此循环上界为 `n`。
|
||||
|
||||
###### 第37题
|
||||
|
||||
**答案:** `i-p+1`
|
||||
|
||||
**解析:** 第 `i` 项要插入位置 `i-p`,需把 `i-p` 至 `i-1` 的元素右移一位,故倒序移动循环的下界为 `i-p+1`。
|
||||
|
||||
###### 第38题
|
||||
|
||||
**答案:** `a[i-p]`
|
||||
|
||||
**解析:** 腾出的插入位置是 `i-p`,应把暂存值写入 `a[i-p]`。
|
||||
|
||||
##### 程序(2)
|
||||
|
||||
**程序分析:** 程序离线按身高排序并建立双向链表,再按进入教室的逆序删除同学。处理第 `i` 人时,链表中保留的恰是此前进入者,最近身高只可能来自其有序前驱或后继。
|
||||
|
||||
**答案速查**
|
||||
|
||||
| 题号 | 答案 |
|
||||
| :---: | :--- |
|
||||
| 39 | `i <= j` |
|
||||
| 40 | `next_pos[order[i]] = order[i+1]` |
|
||||
| 41 | `higher = height[next_pos[i]] - height[i]` |
|
||||
| 42 | `shorter < higher` |
|
||||
| 43 | `previous[next_pos[i]] = previous[i]` |
|
||||
|
||||
###### 第39题
|
||||
|
||||
**答案:** `i <= j`
|
||||
|
||||
**解析:** 快速排序的两个扫描指针尚未交错时才能交换,条件为 `i<=j`。
|
||||
|
||||
###### 第40题
|
||||
|
||||
**答案:** `next_pos[order[i]] = order[i+1]`
|
||||
|
||||
**解析:** 按身高顺序建立右邻链接,当前结点 `order[i]` 的后继应为 `order[i+1]`。
|
||||
|
||||
###### 第41题
|
||||
|
||||
**答案:** `higher = height[next_pos[i]] - height[i]`
|
||||
|
||||
**解析:** 若存在更高的后继,与其身高差为 `height[next_pos[i]]-height[i]`,应赋给 `higher`。
|
||||
|
||||
###### 第42题
|
||||
|
||||
**答案:** `shorter < higher`
|
||||
|
||||
**解析:** 只有更矮者严格更近时才选前驱。相等时题目要求选择更高者,因此条件应为 `shorter<higher`。
|
||||
|
||||
###### 第43题
|
||||
|
||||
**答案:** `previous[next_pos[i]] = previous[i]`
|
||||
|
||||
**解析:** 删除当前结点后,其后继的前驱需接到当前前驱,执行 `previous[next_pos[i]]=previous[i]`。
|
||||
Reference in new issue
Block a user