| 题号 | 题型 | 答案 | 考点 | 解题思路 |
|---|---|---|---|---|
| 第 1 题 | 选择题 | B | 组合数学 | 先枚举所有和为3的倍数的3元子集,再对含0的子集排除首位为0的情况。 |
| 第 2 题 | 选择题 | C | — | 圆排列的核心是旋转等价,通常固定一人破环;相邻约束用捆绑法,将两人视为一个整体。本题需先确定总人数,再计算满足条件的排列数。 |
| 第 3 题 | 选择题 | B | 动态规划 | 看到这题先想区间 DP 框架:dp[i][j] 表示合并第 i 到 j 堆的最小代价,状态转移是枚举中间分割点 k,dp[i][j] = min(dp[i][k] + dp[k+1… |
| 第 4 题 | 选择题 | A | 构造 | 先序定根,中序分左右。根节点 A 在中序中位置将树分为左子树(D B E)和右子树(F C G)。递归处理左右子树:左子树根为 B,其左为 D、右为 E;右子树根为 C,其左为 F… |
| 第 5 题 | 选择题 | B | 快速幂、时间复杂度分析 | 快速幂的核心是把指数写成二进制,从低位到高位扫描,遇到 1 就乘一次底数。朴素乘幂要 n 次乘法,二进制拆分后乘法次数变成 O(log n)。负指数需要求逆元,不能直接套用;模数可… |
| 第 6 题 | 选择题 | B | 组合数学 | 看到杨辉三角直接想到组合数公式 $\binom{n}{k}$,第7行第3列即 $\binom{7}{3}$,用阶乘或递推都能算,关键是别把行列数搞反。 |
| 第 7 题 | 选择题 | C | — | 设宽为 x,则长为 3x,周长公式 2×(3x+x)=8x=48,解得 x=6,面积=18×6=108。 |
| 第 8 题 | 选择题 | D | — | 这题本质是条件分支求值。看到题先定位条件表达式,代入给定数值判断真假,再根据真假选择对应分支计算目标表达式。关键观察是条件里的运算符优先级和括号范围,以及代入后是否满足不等式。这类… |
| 第 9 题 | 选择题 | A | 算法、最小生成树 | 看到 MST 算法对比题,先锁定两个核心差异:Prim 按顶点扩展,Kruskal 按边排序。再警惕绝对化表述("一定""必须""只能")——这类选项 99% 是陷阱。 |
| 第 10 题 | 选择题 | B | 最小生成树、算法 | 看到题先想:边权排序→并查集维护连通性→依次选不构成环的边。排序后边序为:(1,3,1)、(3,4,2)、(2,3,3)、(2,4,4)、(1,2,5)、(3,5,6)、(4,5,… |
| 第 11 题 | 选择题 | A | 算法、最短路径 | 看到"小根堆优化 Dijkstra"先想:堆里存什么能让每次弹出当前距离最小的顶点?Dijkstra 核心是维护每个顶点到源点的当前最短距离,用堆加速查找最小距离顶点。因此堆元素必… |
| 第 12 题 | 选择题 | A | 算法、动态规划、图论算法 | Floyd 三重循环的核心是"逐步扩大中间顶点集合"。外层 k 控制允许作为中间点的顶点编号上限,内层 i、j 枚举所有点对。每次迭代后,dist[i][j] 存储的是"仅用编号≤… |
| 第 13 题 | 选择题 | C | 算法 | 看到题先想“渐近增长率”的固定阶梯:常数级 O(1) 最慢,接着对数级 O(log n)、线性级 O(n)、线性对数级 O(n log n)、平方级 O(n²)、指数级 O(2ⁿ)… |
| 第 14 题 | 选择题 | D | 前缀和与差分 | 差分数组的核心思想是将区间操作转化为端点修改。每次区间加操作只需修改差分数组的两个位置,耗时O(1)。最后通过一次前缀和还原数组,耗时O(n)。总操作次数为m次区间加+1次前缀和,… |
| 第 15 题 | 选择题 | D | 构造 | 看到继承类对象创建,先想基类构造再派生类构造;销毁时反过来。 |
| 第 16 题 | 判断题 | A | 排列组合算法 | 看到"从 n 个不同元素选 k 个分给 k 个不同对象"立刻想到排列数公式 P(n,k) = n!/(n k)!。本题 n=4,k=3,直接套用公式即可。 |
| 第 17 题 | 判断题 | A | 组合数学 | 看到二项式系数和的问题,先联想到二项式定理的赋值技巧。关键观察是:令a=1,b= 1时展开式变为0,意味着奇偶项系数交替相减抵消。数值验证:n=1时系数1,1;n=2时1,2,1;… |
| 第 18 题 | 判断题 | A | 最小生成树、算法 | 看到"最小生成树是否唯一"这类命题,第一反应是回忆Kruskal算法的贪心策略——按边权从小到大排序,依次选取不构成环的边。唯一性判定的核心定理是:MST唯一当且仅当所有边权互不相… |
| 第 19 题 | 判断题 | A | 算法、时间复杂度分析 | 朴素 Dijkstra 用数组存最短距离,每次都要遍历所有顶点找未访问的最小值,外层循环 V 次,内层找最小值 O(V),合计 O(V²)。邻接表只是存边,不影响找最小值的开销。 |
| 第 20 题 | 判断题 | B | 堆排序 | 堆排序通过构建大顶堆/小顶堆实现排序,过程中涉及大量元素交换。稳定性要求相等元素相对位置不变,但堆调整时父节点与子节点交换会打乱同值元素顺序,故堆排序不稳定。 |
| 第 21 题 | 判断题 | A | 唯一分解定理 | 这题考的是数论基础中的唯一分解定理。看到"大于 1 的整数"和"质因数乘积"这两个关键词,直接联想到小学奥数里学过的分解质因数内容。命题人放这道题就是卡住那些只背过"每个合数都能分… |
| 第 22 题 | 判断题 | A | — | 看到这题先想循环队列的队空判空条件 rear==front,再看队满判满条件 rear==(front+1)%size。发现 rear==front 既可能是空也可能是满,无法区分… |
| 第 23 题 | 判断题 | B | — | 先明确私有继承的定义,再说明基类公有成员在派生类中的访问权限变化,最后判断题目陈述是否正确。 |
| 第 24 题 | 判断题 | A | 动态规划 | 滚动数组的本质是压缩存储维度,用循环变量覆盖旧状态。时间复杂度取决于状态数和转移次数,与存储方式无关。因此滚动数组只能降空间、不降时间,答案选 A。 |
| 第 25 题 | 判断题 | A | — | 看到三角形三边求面积,第一反应是海伦公式:先算半周长 s = (a+b+c)/2,再代入 S = √[s(s a)(s b)(s c)]。关键观察是公式里全是边长,没有高,所以不需… |
建议按「限时做 → 对答案 → 读常见错误」三步走。先按考试的真实节奏做完,再回来看每一题的解析;尤其是"常见错误"那一段——它对应的是命题人反复设置的陷阱,读完能直接迁移到同类题上。
想做限时模考,可在 OI伴学 平台切换考试模式;错题会自动归集,并按考点推荐同类练习。