| 题号 | 题型 | 答案 | 考点 | 解题思路 |
|---|---|---|---|---|
| 第 1 题 | 选择题 | C | — | 这题考递归与循环的时间复杂度对比。拿到题先看两版代码:fiboA 是递归,fiboB 是迭代。别被代码量骗了,递归看似简洁,实则每次调用又拆成两次,形似二叉树,总调用次数呈指数增长… |
| 第 2 题 | 选择题 | C | 函数与递归、分治算法 | 这题考的是递归分治中区间边界的精确划分。拿到题先别急着背模板,盯着代码里的 m 定义和 merge 函数的参数。merge 把 T[s..m] 和 T[m+1..t] 合起来,那递… |
| 第 3 题 | 选择题 | D | 函数 | 全局变量stepCount是贯穿整个程序的生命线,先理清fracA和fracB各自会触发多少次stepCount自增,再按调用顺序把打印结果串起来就能锁定答案。 |
| 第 4 题 | 选择题 | A | — | 这题考的是冒泡排序里交换条件的写法。既然要偶数在前、奇数在后,就得让奇数往后沉。拿到题先想:偶数在前意味着什么?意味着遇到‘前奇后偶’的情况必须交换。所以条件就是判断 lstA[j… |
| 第 5 题 | 选择题 | B | 链表 | 这题考带头节点的双向链表插入。拿到题先别急着写代码,脑子里过一遍链表结构:头节点后面跟着数据节点。插入新节点 p 时,p 要插在头节点和原来的第一个数据节点之间。关键就是:原来的第… |
| 第 6 题 | 选择题 | A | 函数与递归、算法、最大公约数与最小公倍数 | 这题考的是递归深度与输入规模的关系,别被'无限递归'吓住,关键看参数y每次怎么变,以及rc到底在统计什么。 |
| 第 7 题 | 选择题 | C | — | 这题考快速排序的递归拆分与vector拼接。拿到题先看operator+只接两个vector,pivot是int,所以拼接时必须显式转成vector,否则类型不匹配编译不过,这是解… |
| 第 8 题 | 选择题 | B | 复杂度分析 | 这题考时间复杂度,别被 sqrt 吓住,直接数循环跑几步就行。A 版循环到 N/2,B 版循环到根号 N,最大情况就是都跑完,代入大 O 记号对比大小,选那个描述最准的。 |
| 第 9 题 | 选择题 | D | 分治算法、函数与递归、二分查找 | 这题考的是算法思想的辨析,别被递归函数名带偏,抓住‘子问题是否重叠’这个核心判据,就能一眼看出它只是分治递归,绝不是动态规划。 |
| 第 10 题 | 选择题 | B | 二分查找、复杂度分析 | 这题其实就考一个核心直觉:二分每次把范围砍一半,N 到 1 需要砍多少次?次数就是 log₂N,所以复杂度是 O(log N)。 |
| 第 11 题 | 选择题 | D | 模拟 | 这题就是大数模拟加法,循环里 t 已经累加完当前位和进位了,横线上只要把 t 的个位存进结果、再把剩下的作为新进位赋给 t 即可,直接看选项里谁同时做了取模和整除就能秒杀。 |
| 第 12 题 | 选择题 | B | 指针与引用、链表 | 这道题考的是链表类型判断,拿到代码先别急着看逻辑,直接看节点定义里有没有Prev和Next两个指针成员,有就是双向,没有就是单向。 |
| 第 13 题 | 选择题 | B | — | 这题考的是通讯卫星最本质的物理作用。拿到题先别想高级功能,直接定位它在通信链路里的角色:它是悬在空中的‘站’,负责把地面的信号‘接’过来,再‘转’给远方。抓住‘跨距离转发’这个核心… |
| 第 14 题 | 选择题 | C | 算法、二分查找 | 这题考的是算法适用场景,核心在于理解‘判断’与‘查找’的本质区别。拿到题先想:二分法能直接用来判定素数吗?显然不能,它得依赖一个已经排好序的素数表。既然表是现成的,那‘判断’就失去… |
| 第 15 题 | 选择题 | B | 算法、快速排序 | 这道题考排序算法每趟的核心机制。拿到题先别急着背算法名,而是想:这趟操作到底是在‘挑极值’还是‘分区间’?把四个算法每趟做的事列出来对比,答案自然浮现。 |
| 第 16 题 | 判断题 | A | 算法、归并排序 | 这题就是考经典结论,拿到题直接回想归并排序的‘分治’流程:一层层二分到底(深度 logN),每层合并都要扫一遍(工作量 N),相乘就是 O(N log N),选 A 没错。 |
| 第 17 题 | 判断题 | B | 二分答案 | 这题考的是二分答案的适用条件。拿到题先别急着套模板,要反问自己:判定条件是否随答案单调?巧克力能切成任意矩形,只要长宽是原长的约数且乘积≥L²,这破坏了单调性,所以不能二分。 |
| 第 18 题 | 判断题 | B | 函数 | 这题别光盯着递推公式看,代码里藏着致命陷阱。拿到题先扫一眼函数调用名,发现 Fibo 里调的是 fiboA 和 fiboB,而这两个函数在题面里根本没定义。递归函数若调用未定义函数… |
| 第 19 题 | 判断题 | A | 贪心算法 | 这题考的是贪心算法的核心定义。拿到题先别想复杂证明,直接回归课本定义:贪心就是每步选当前最优,且不回溯。题干前半句说它能达局部最优(定义成立),后半句说可能非全局最优(反例存在,如… |
| 第 20 题 | 判断题 | A | — | 这题其实就考一个核心认知:任何合数(非质数)都能被拆成质数的乘积。拿到题别想复杂算法,直接回忆质数与合数的定义和欧几里得定理的推论,就能秒懂为什么程序一定能设计出来。 |
| 第 21 题 | 判断题 | A | 算法 | 分析时间复杂度时关注循环层数和每层迭代次数,递归算法则分析递归树。注意最坏/最好/平均情况的区别。 |
| 第 22 题 | 判断题 | B | 字符数组与字符串处理 | 这题考的是进制转换算法与字符串构造细节。拿到题先别急着看选项,把代码当黑盒跑一遍:循环里 N%8 取余、加'0'转字符没错,但后面 rst += string(s) 才是命门——它… |
| 第 23 题 | 判断题 | A | 算法 | 这题考的是 STL 标准库算法。拿到题先别急着看选项,盯着函数名 sort 和它的作用域:它只管把区间里的元素按非降序排好,完全不关心原本相等的元素谁先谁后。 |
| 第 24 题 | 判断题 | A | — | 图的存储方式:邻接矩阵(O(n²)空间,适合稠密图)、邻接表(O(n+m)空间,适合稀疏图)。 |
| 第 25 题 | 判断题 | A | 复杂度分析、链表 | 这题考的是冒泡排序在链表上的时间复杂度。别被双向链表多一个指针带偏,冒泡核心就是两两比较交换,两种链表遍历次数都是n²,复杂度自然一样。 |
建议按「限时做 → 对答案 → 读常见错误」三步走。先按考试的真实节奏做完,再回来看每一题的解析;尤其是"常见错误"那一段——它对应的是命题人反复设置的陷阱,读完能直接迁移到同类题上。
想做限时模考,可在 OI伴学 平台切换考试模式;错题会自动归集,并按考点推荐同类练习。