- 将18套模拟卷分离为试题和答案解析,补齐并规范逐题解析 - 补充SVG图示,统一试题排版并导出打印PDF - 重整初赛专题训练与复习资料目录,清理旧版源文件
10 KiB
一、单项选择题
答案速查
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 答案 | A | D | A | A | A | C | C | A |
| 题号 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|
| 答案 | C | B | C | A | C | B | A |
逐题解析
第1题
答案: A
解析: 早期电子计算机首先用于科学与工程中的数值计算,例如数值表和复杂算式的计算。
第2题
答案: D
解析: 将两个二进制数对齐后逐位进行与运算,只有两位均为 1 时结果才为 $1$,得到 01 0010 1000 0011。
第3题
答案: A
解析: 存储单元的唯一标识称为地址,CPU 根据地址读写相应的存储单元。
第4题
答案: A
解析: 每两轮形成 ASDFasdf 的 8 字符循环。$81\bmod8=1$,因此第 81 个字符是大写 A。
第5题
答案: A
解析: 所需空间为 800\times600\times16/8=960000 字节,即 $960000/1024=937.5\ \mathrm{KB}$。
第6题
答案: C
解析: 先将第一个数作为当前最大值,再依次与其余 N-1 个数比较。每次比较至多排除一个候选最大值,因此至少需要 N-1 次比较。
第7题
答案: C
解析: 在题目的理论模型中,机器字长和地址宽度不同,会导致可寻址空间不同;显示器、硬盘容量和输入法不由 32 位或 64 位这一分类直接决定。
第8题
答案: A
解析: 按边数分类:3 条边时有路径和星形两种,4 条边时有四边形和三角形带一条悬挂边两种,5 条边和 6 条边时各一种,共 2+2+1+1=6 种。
第9题
答案: C
解析: 最少比较次数出现在输入数组已经有序时:第一趟比较 n-1 对相邻元素,没有交换,随后外层循环结束。
第10题
答案: B
解析: 先计算 b+c,其后缀表达式为 bc+;再与 a 相乘,最后与 d 相乘,得到 abc+*d*。
第11题
答案: C
解析: 从根开始依次沿右孩子到达图中最右下结点,其下标依次为 $1,3,7,15$,所以数组最大下标至少为 $15$。
第12题
答案: A
解析: $13=8+4+1=(1101)_2$,$0.375=1/4+1/8=(0.011)_2$,合并得到 $(1101.011)_2$。
第13题
答案: C
解析: 首尾两位及第二、四位分别可取 00、11、88、69、96,各有 5 种选择;中间一位只能取 0、1、8。共有 5\times5\times3=75 种。
第14题
答案: B
解析: x & (x-1) 每次恰好清除二进制表示中最右侧的一个 1。循环次数因此等于 1 的个数,所填语句为 x &= x - 1。
第15题
答案: A
解析: CPU 负责执行运算和控制程序运行。易失性存储器断电后可能丢失数据,屏幕尺寸与分辨率不具有一一对应关系,接入互联网也不限于 Wi-Fi。
二、阅读程序
程序(1)
程序分析: 对每个位置 i,程序输出从该位置向右、连续元素均不大于 a[i] 的最远端点 ans。若当前值比前一个值小,则重新从 i 开始寻找。
答案速查
| 题号 | 16 | 17 | 18 | 19 | 20 | 21 |
|---|---|---|---|---|---|---|
| 答案 | × | √ | √ | √ | D | A |
第16题
答案: ×(错误)
解析: ans 至少等于 i,但可能恰好等于 i;例如严格递增序列中每次输出就是当前位置,因此不保证严格大于。
第17题
答案: √(正确)
解析: 只有在 ans<n 时才执行递增操作,故 ans 不会超过 $n$。
第18题
答案: √(正确)
解析: 下降时两种条件都会重置;上升时重置为 i 也不会丢失合法的更远端点;相等时两种条件都不重置,因此结果不变。
第19题
答案: √(正确)
解析: ans 是连续满足约束的最远端点。既然已越过 i+1,该位置的值必然不大于 a[i]。
第20题
答案: D
解析: 严格递增时,每轮只需常数次判断,ans 随位置推进,整体时间复杂度为 $O(n)$。
第21题
答案: A
解析: 严格递减时,每个位置都会重置并向右扫描至末尾,总次数为 $n+(n-1)+\cdots+1$,最坏复杂度为 $O(n^2)$。
程序(2)
程序分析: 程序将 Base64 字符映射为 6 位整数,再将每四个编码字符组合为至多三个原始字节。ans 是全局字符数组,输出时按以零结尾的 C 字符串处理。题目规定 char 为有符号的 8 位类型。
答案速查
| 题号 | 22 | 23 | 24 | 25 | 26 | 27 |
|---|---|---|---|---|---|---|
| 答案 | × | √ | √ | B | B | C |
第22题
答案: ×(错误)
解析: 限定的字符集合是 Base64 编码的输入字符集;解码结果可以包含空格等其他字符,因此该断言错误。
第23题
答案: √(正确)
解析: 例如 YQ== 解码为 a,YQA= 解码为 a 后跟零字节。用 %s 输出时都会在零字节处结束,第二行同为 a。
第24题
答案: √(正确)
解析: table[0] 被初始化为全一位模式 0xff,在题目规定的有符号 8 位 char 中表示 $-1$,转为 int 后仍为 $-1$。
第25题
答案: B
解析: 循环每次处理 4 个输入字符,每轮只进行常数次运算,总时间复杂度为 $O(n)$。
第26题
答案: B
解析: 将 Y3Nx 按 Base64 解码,依次得到字符 c、s、q,所以输出 csq。
第27题
答案: C
解析: 该字符串解码为 ccf 2021,其中 ccf 与年份之间有一个空格,不能省略。
程序(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)
程序分析: 程序用两次计数排序完成二关键字排序:先按次关键字 b 排序,再稳定地按主关键字 a 排序。ord、res 保存原数据下标,最终按 a 优先、b 次之输出。
答案速查
| 题号 | 34 | 35 | 36 | 37 | 38 |
|---|---|---|---|---|---|
| 答案 | B | D | C | A | B |
第34题
答案: B(++cnt[b[i]])
解析: 第一趟按 b 排序,因此应统计每个 b[i] 的出现次数,执行 ++cnt[b[i]]。
第35题
答案: D(ord[--cnt[b[i]]] = i)
解析: 前缀计数确定排序位置,需在 ord[--cnt[b[i]]] 中记录原数据下标 i。
第36题
答案: C(++cnt[a[i]])
解析: 第二趟以 a 为主关键字,因此统计 a[i] 的出现次数。
第37题
答案: A(res[--cnt[a[ord[i]]]] = ord[i])
解析: 沿第一趟结果逆序扫描,并按 a[ord[i]] 放入最终位置,以保持相同 a 时原有的 b 顺序。
第38题
答案: B(a[res[i]], b[res[i]])
解析: 最终排列保存在 res 中,应输出原数组中下标为 res[i] 的二元组。
程序(2)
程序分析: 程序排序后,用资金最多的候选同学与价格最低的自行车配对,累计各人的不足金额,判断公共预算能否补足;再二分求最多可租车的人数。函数参数 nn 为本次待检验人数。
答案速查
| 题号 | 答案 |
|---|---|
| 39 | n-nn+1 |
| 40 | M[i] < C[j] |
| 41 | count <= A |
| 42 | check(mid) |
| 43 | mid-1 |
第39题
答案: n-nn+1
解析: 应选取排序后资金最多的 nn 人,其第一人的下标是 n-nn+1。
第40题
答案: M[i] < C[j]
解析: 只有自行车价格高于该同学已有资金时才需公共预算补足,即判断 M[i]<C[j]。
第41题
答案: count <= A
解析: 累计不足金额 count 不超过学校预算 A 时,本次人数可行,因此返回 count<=A。
第42题
答案: check(mid)
解析: 将二分得到的候选人数 mid 交给判定函数,调用 check(mid)。
第43题
答案: mid-1
解析: 候选人数不可行时,应把右边界缩小到 mid-1,排除当前值及更大值。