| 题号 | 题型 | 答案 | 考点 | 解题思路 |
|---|---|---|---|---|
| 第 1 题 | 选择题 | C | 排列组合基础、计数原理 | 先排5个红球形成6个空位,再选5个空位插蓝球,用组合数C(6,5)直接算出答案。 |
| 第 2 题 | 选择题 | A | 字符串算法、KMP算法 | 这题就是考 KMP 里 next 数组的原始定义。拿到串先别急着套代码,从长度 1 开始,一位一位加,看能不能在刚才找到的最长公共前后缀基础上再往前多拼一个字符;拼不上就回退到前一… |
| 第 3 题 | 选择题 | B | 线段树 | 这题考线段树查询的节点访问计数。满树16个叶子,查询[3,11]得8个节点。关键是别漏路径上的父节点,只要部分重叠就要继续往下走,完全包含才停止。 |
| 第 4 题 | 选择题 | D | 字典树(Trie) | 这题本质就是数 Trie 里有多少个‘字符节点’,再别忘了加根节点。插入时只要遇到没走过的分支就新建节点,已走过的直接复用,逐个串插入后把节点数累加即可。 |
| 第 5 题 | 选择题 | D | 拓扑排序、图的基本概念 | 这题考拓扑排序的数量性质。拿到题先想:拓扑排序是把 DAG 线性化,只要存在‘自由点’(入度为 0 的点),顺序就能换,数量就会爆炸。别被 n m 这种线性关系忽悠,孤立点都能排 … |
| 第 6 题 | 选择题 | D | 特殊结构、同余与模运算 | 这道题考哈希表闭散列的线性探查。拿到题先算每个关键字的哈希值,再按插入顺序模拟冲突处理:遇到冲突就往后挪,直到找到空位或绕回表头。 |
| 第 7 题 | 选择题 | A | 图论算法、最小生成树 | 拿到题先别想跑 Kruskal 或 Prim 算法,8 个顶点只要 7 条边,边权最小就是 1,直接连相邻顶点成一条链,总权重就是 7。 |
| 第 8 题 | 选择题 | A | 树形结构、二叉树的遍历、二叉搜索树(BST) | 拿到后序序列别急着反转,先锁定末尾那个根节点,利用BST大小性质把序列一分为二,左右子树递归还原,最后按根左右拼起来就是前序。 |
| 第 9 题 | 选择题 | D | 经典DP模型、背包DP | 这道题考0 1背包。别急着贪心算性价比,容量只有20,物品数才5个,直接枚举所有组合或套用标准DP都能秒杀。 |
| 第 10 题 | 选择题 | D | LCA(最近公共祖先) | 这题考树的基本性质和LCA定义。拿到题先抓住根节点1的特殊地位——任何节点与根的LCA必为根。再看已知条件LCA(12,18)=4,说明4是12和18的公共祖先,且是最深的。从这两… |
| 第 11 题 | 选择题 | C | 分治算法、算法 | 拿到递推式先别急着套公式,把a、b、f(n)三个参数拎出来,算一下log_b a和f(n)的指数对比,主定理三种情况一眼就能定乾坤。 |
| 第 12 题 | 选择题 | A | 堆(Heap) | 这道题考最小堆的插入上浮和删除下沉。拿到题先按顺序模拟插入,插完再删两次最小值,每次删完记得把新的堆顶下沉到合法位置,最后看堆顶是谁。 |
| 第 13 题 | 选择题 | A | 整数与整除、排列组合基础、计数原理 | 这道题考的是容斥原理,核心是算出能被2、3或5整除的数有多少个,再用总数减去它。拿到题先想:分别算出单集合、两两交集、三集合交集的个数,按“单加、双减、三加”的规律拼起来。 |
| 第 14 题 | 选择题 | C | 递归函数、记忆化搜索、动态规划 | 这题是送分题,别整那些虚头巴脑的。直接抓住核心:为什么递归算得慢?因为同一个子问题被反复算了很多遍。把这点想透了,其他选项全是干扰,根本不用纠结。 |
| 第 15 题 | 选择题 | B | 贪心算法 | 这题核心就是贪心策略的选择。拿到题别急着算,先想目标:要最小化超时惩罚,也就是尽量别让任务晚于截止时间。单机调度里,让任务按‘截止时间从早到晚’排(EDD 策略),是最稳妥的。只要… |
| 第 16 题 | 阅读程序 | ABDC | DFS(深度优先搜索)、回溯法 | 这题核心是 DFS 回溯枚举排列,但加了一条‘禁止后一个数比前一个大 1'的限制。拿到题先想:n=3 时暴力列一下所有排列,划掉含'1,2'或'2,3'的,数剩下的个数;再想代码里… |
| 第 17 题 | 阅读程序 | ABC | 基础算法、分治算法 | 这题本质是扔鸡蛋问题的变种,核心在于理解 guess1 的线性扫描与 guess2 的等差数列分块策略。拿到题先看 check 函数里 cnt_broken==2 就退出的条件,再… |
| 第 18 题 | 阅读程序 | BAD | 快速幂、折半搜索(Meet in the Middle)、分治算法 | 这题是典型的折半搜索(Meet in the Middle)应用。拿到题先别急着枚举,要把 n 个变量一分为二,分别暴力跑出所有可能的和,存进两个数组。前半部分算完要排序并去重计数… |
| 第 19 题 | 完善程序 | ABC | 图论算法、最短路径、基础算法 | 这道题考分层图最短路。拿到题先别想复杂,核心就是给每个点加个状态:0 表示还没用过免费边,1 表示已经用过了。然后跑两遍 Dijkstra,一层层更新距离,最后取终点两个状态的最小… |
| 第 20 题 | 完善程序 | BDA | 排列组合基础、计数原理、枚举法、模拟 | 这题考的是带约束的组合枚举与群体测试编码。拿到题先想:w 轮测试能产生多少种‘退货次数≤k’的码字?只要这个数≥n,就够区分 n 条线了。于是核心就是写个函数把所有满足 1 的个数… |
建议按「限时做 → 对答案 → 读常见错误」三步走。先按考试的真实节奏做完,再回来看每一题的解析;尤其是"常见错误"那一段——它对应的是命题人反复设置的陷阱,读完能直接迁移到同类题上。
想做限时模考,可在 OI伴学 平台切换考试模式;错题会自动归集,并按考点推荐同类练习。