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