- 将18套模拟卷分离为试题和答案解析,补齐并规范逐题解析 - 补充SVG图示,统一试题排版并导出打印PDF - 重整初赛专题训练与复习资料目录,清理旧版源文件
9.7 KiB
一、单项选择题
答案速查
| 题号 | 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$。