Appearance
附录 B · 高频考点 · 易错点 · 速查总表
本附录把第 2~9 章的「📊 考点总结表」聚合为一册,供考前集中复习与临场速查。 星标 = 考频(⭐ 越多,出题频率越高、分值占比越大)。全表共 84 条考点,其中 16 条五星。
一、五星考点 TOP 榜(必看必背)
| # | 五星考点 | 章 | 一句话要点 |
|---|---|---|---|
| 1 | 线性筛法 | 2 | 每个合数只被最小质因子筛一次;核心语句 if (i % primes[j] == 0) break |
| 2 | GCD 辗转相除法 | 2 | gcd(a,b) = gcd(b, a%b);终止条件 b == 0 |
| 3 | gcd × lcm = a × b | 2 | 知一求另一;求 lcm 必须先除后乘防溢出 |
| 4 | 链表反转(三指针法) | 3 | prev / curr / nextTemp;核心 curr->next = prev |
| 5 | 高精度加法(进位) | 4 | 循环结束后 carry != 0 必须追加 |
| 6 | 二分查找左闭右闭写法 | 5 | while(l<=r) + r = mid-1 / l = mid+1 |
| 7 | 二分答案思想 | 5 | 答案有单调性 + 设计 check 函数 |
| 8 | 递归两大要素 | 6 | 基线条件 + 递归条件;缺一 → 无限递归 → 栈溢出 |
| 9 | 斐波那契递归 | 6 | 朴素 O(2ⁿ);记忆化/递推降为 O(n) |
| 10 | 归并排序原理与实现 | 7 | 对半拆 → 递归排 → 合并;合并用双指针 |
| 11 | 归并排序复杂度 | 7 | 时间 O(n log n),空间 O(n),始终不退化 |
| 12 | 快速排序 partition 过程 | 7 | 选 pivot → 分区 → pivot 归位;递归不含 pivot |
| 13 | 快排复杂度 | 7 | 平均 O(n log n),最坏 O(n²)(数组已有序) |
| 14 | 贪心两个基本要素 | 8 | 贪心选择性质 + 最优子结构,缺一不可 |
| 15 | 活动选择(按结束时间排序) | 8 | 排序依据是结束时间,不是开始时间/时长 |
| 16 | 合并果子(哈夫曼) | 8 | 每次取最小两堆 → 小根堆;新堆要放回队列 |
二、逐章考点 · 易错点总表
第 2 章 初等数论(12 条)
| 考点 | 星 | 出题形式 | 易错点 |
|---|---|---|---|
| 素数定义(1 不是素数、2 是唯一偶素数) | ⭐⭐⭐ | 选择/判断 | 判断题陷阱多 |
| 素数判定(试除法) | ⭐⭐⭐⭐ | 选择/代码填空 | i*i 溢出;漏掉 n<2 判断 |
| 埃氏筛法 | ⭐⭐⭐⭐ | 代码填空/选择 | 内层从 i² 开始;复杂度 O(n log log n) |
| 线性筛法 | ⭐⭐⭐⭐⭐ | 代码填空/选择 | break 的位置和作用(核心考点) |
| GCD 辗转相除法 | ⭐⭐⭐⭐⭐ | 选择/程序阅读 | 终止条件 b==0;gcd(0,x)=x |
| LCM 计算 | ⭐⭐⭐⭐ | 选择/计算 | 先除后乘防溢出 |
| gcd × lcm = a × b | ⭐⭐⭐⭐⭐ | 选择/判断/计算 | 公式记错 |
| 模运算(加减乘) | ⭐⭐⭐⭐ | 选择/代码填空 | 减法取模要加 m 防负数 |
| 质因数分解 | ⭐⭐⭐⭐ | 选择/程序填空 | 循环后漏掉 n>1 的素数 |
| 约数个数公式 | ⭐⭐⭐ | 选择/计算 | 是 (ai+1) 不是 ai |
| 约数和公式 | ⭐⭐⭐ | 选择/计算 | 等比和从 1 开始 |
| 奇偶性分析 | ⭐⭐ | 选择/判断 | n&1 判断;2 的幂 n&(n-1)==0 |
第 3 章 链表(10 条)
| 考点 | 星 | 出题形式 | 易错点 |
|---|---|---|---|
| 链表 vs 数组对比 | ⭐⭐⭐ | 选择/判断 | 各自优缺点记反 |
| 单链表节点定义 | ⭐⭐⭐ | 选择/代码填空 | 指针类型写错 |
| 单链表遍历 | ⭐⭐⭐⭐ | 程序阅读 | 终止条件 p != nullptr |
| 链表插入(头插/尾插/中间插) | ⭐⭐⭐⭐ | 代码填空/编程题 | 指针修改顺序(先连后断) |
| 链表删除 | ⭐⭐⭐⭐ | 选择/代码填空 | 先释放再改指针 → 野指针 |
| 链表反转(三指针法) | ⭐⭐⭐⭐⭐ | 代码填空(高频) | 三指针顺序搞混 |
| 双链表插入删除 | ⭐⭐⭐ | 选择/程序阅读 | 四个指针修改顺序 |
| 循环链表终止条件 | ⭐⭐⭐ | 判断/选择 | 与普通链表混淆(应为 p == head) |
| 约瑟夫问题 | ⭐⭐⭐⭐ | 编程题/程序阅读 | 报数起始位置搞错 |
| 时间复杂度分析 | ⭐⭐⭐ | 选择 | 已知位置插入 O(1),查找 O(n) |
第 4 章 高精度(10 条)
| 考点 | 星 | 出题形式 | 易错点 |
|---|---|---|---|
| 倒序存储原理 | ⭐⭐⭐⭐ | 选择/判断 | 为什么要倒序搞不清楚 |
| 高精度加法(进位) | ⭐⭐⭐⭐⭐ | 编程题/代码填空 | 漏掉最后的进位 |
| 高精度减法(借位) | ⭐⭐⭐⭐ | 编程题 | 忘记比较大小;前导零没去干净 |
| 减法的大小比较 | ⭐⭐⭐⭐ | 选择/编程 | 不知道先比较大小再减 |
| 高精 × 低精 | ⭐⭐⭐⭐ | 编程题/代码填空 | 进位是多位数,要用 while |
| 高精 × 高精 | ⭐⭐⭐ | 编程题 | 结果数组位置 i+j 搞不清 |
| 高精 ÷ 低精 | ⭐⭐⭐ | 代码填空/程序阅读 | 从高位开始算;余数×10+下一位 |
| 前导零处理 | ⭐⭐⭐⭐ | 判断/代码填空 | 加法不需要,减法除法需要 |
| 结果位数估算 | ⭐⭐⭐ | 选择 | 乘法最多 n+m 位 |
| 阶乘高精度实现 | ⭐⭐⭐⭐ | 编程题 | 经典应用,必须掌握 |
第 5 章 二分算法(10 条)
| 考点 | 星 | 出题形式 | 易错点 |
|---|---|---|---|
| 二分查找前提(有序) | ⭐⭐⭐ | 选择/判断 | 忘记有序这个前提 |
| 左闭右闭写法 | ⭐⭐⭐⭐⭐ | 代码填空/程序阅读 | while 条件和 ±1 搞混 |
| 左闭右开写法 | ⭐⭐⭐⭐ | 选择/代码填空 | right=mid 还是 mid-1 |
| mid 防溢出写法 | ⭐⭐⭐⭐ | 选择/代码填空 | left + (right-left)/2 |
| lower_bound / upper_bound | ⭐⭐⭐⭐ | 选择/程序阅读 | ≥ 和 > 搞反 |
| 二分答案思想 | ⭐⭐⭐⭐⭐ | 编程题 | 不知道什么时候用二分答案 |
| check 函数设计 | ⭐⭐⭐⭐ | 编程题 | check 函数写不对 |
| 整数二分死循环 | ⭐⭐⭐⭐ | 选择/代码填空 | left=mid 时要向上取整 |
| 浮点数二分 | ⭐⭐⭐ | 选择/编程 | 不用 ±1,直接 =mid |
| 时间复杂度 O(log n) | ⭐⭐⭐⭐ | 选择 | log n 有多快要有概念 |
第 6 章 递归(10 条)
| 考点 | 星 | 出题形式 | 易错点 |
|---|---|---|---|
| 递归两大要素 | ⭐⭐⭐⭐⭐ | 选择/判断 | 忘记基线条件 → 栈溢出 |
| 调用栈原理 | ⭐⭐⭐⭐ | 选择/程序阅读 | 栈的后进先出特性 |
| 阶乘递归 | ⭐⭐⭐ | 程序阅读 | 基线条件 n=0 或 n=1 |
| 斐波那契递归 | ⭐⭐⭐⭐⭐ | 程序阅读/复杂度 | 朴素递归 O(2ⁿ) 很慢 |
| 汉诺塔 | ⭐⭐⭐⭐ | 选择/程序阅读 | 参数顺序搞混;移动次数 2ⁿ-1 |
| 全排列(回溯) | ⭐⭐⭐⭐ | 编程题/代码填空 | 忘记恢复 used 和 path |
| 记忆化搜索 | ⭐⭐⭐⭐ | 代码填空/选择 | memo 初值不能与答案冲突 |
| 递归时间复杂度 | ⭐⭐⭐⭐ | 选择 | 用递归树法分析 |
| 递归空间复杂度 | ⭐⭐⭐ | 选择 | 等于递归深度(栈深度) |
| 递归 vs 迭代 | ⭐⭐⭐ | 选择/判断 | 深度大时用迭代防溢出 |
第 7 章 分治算法(12 条)
| 考点 | 星 | 出题形式 | 易错点 |
|---|---|---|---|
| 分治三步曲(分解-解决-合并) | ⭐⭐⭐⭐ | 选择/判断 | 和递归的关系搞不清 |
| 分治 vs 递归 | ⭐⭐⭐ | 选择/判断 | 递归不等于分治 |
| 归并排序原理与实现 | ⭐⭐⭐⭐⭐ | 编程题/代码填空 | 合并过程的边界条件 |
| 归并排序复杂度 | ⭐⭐⭐⭐⭐ | 选择/判断 | 时间 O(n log n),空间 O(n) |
| 归并排序稳定性 | ⭐⭐⭐⭐ | 选择/判断 | ✅ 稳定,相等时优先取左 |
| 快速排序 partition 过程 | ⭐⭐⭐⭐⭐ | 程序阅读/代码填空 | 指针移动顺序和终止条件 |
| 快排复杂度 | ⭐⭐⭐⭐⭐ | 选择/判断 | 平均 O(n log n),最坏 O(n²) |
| 快排稳定性 | ⭐⭐⭐⭐ | 选择/判断 | ❌ 不稳定 |
| 快排最坏情况 | ⭐⭐⭐⭐ | 选择 | 数组已有序时退化到 O(n²) |
| 逆序对计数 | ⭐⭐⭐⭐ | 编程题/选择 | mid-i+1 个;用 long long |
| 快速选择 | ⭐⭐⭐ | 选择/程序阅读 | 平均 O(n) 找第 k 大/小(超纲) |
| 最大子段和(分治) | ⭐⭐⭐ | 选择/编程 | 三种情况:全左/全右/跨中点 |
第 8 章 贪心算法(10 条)
| 考点 | 星 | 出题形式 | 易错点 |
|---|---|---|---|
| 贪心两个基本要素 | ⭐⭐⭐⭐⭐ | 选择/判断 | 贪心选择性质和最优子结构缺一不可 |
| 贪心 vs 动态规划 | ⭐⭐⭐⭐ | 选择/判断 | 核心区别:贪心不回头,DP 考虑所有选择 |
| 活动选择(按结束时间排序) | ⭐⭐⭐⭐⭐ | 编程题/选择 | 排序方式搞反 |
| 区间选点 / 射气球 | ⭐⭐⭐⭐ | 编程题/选择 | 按右端点排序,选右端点 |
| 合并果子(哈夫曼) | ⭐⭐⭐⭐⭐ | 编程题/选择 | 用小根堆;每次取最小的两个 |
| 排队接水(短作业优先) | ⭐⭐⭐⭐ | 选择/编程 | 按时间升序,短的在前 |
| 找零问题 | ⭐⭐⭐ | 选择/判断 | 只有规范货币系统贪心才对 |
| 乘船问题(双指针) | ⭐⭐⭐ | 选择/编程 | 最轻 + 最重搭配 |
| 优先队列的使用 | ⭐⭐⭐⭐ | 代码填空 | 小根堆写法 greater<int>(超纲) |
| 贪心正确性判断 | ⭐⭐⭐⭐ | 选择/判断 | 找反例是检验贪心的好方法 |
第 9 章 算法复杂度分析(10 条)
| 考点 | 星 | 出题形式 | 易错点 |
|---|---|---|---|
| 大 O 表示法定义与规则 | ⭐⭐⭐ | 选择、判断 | 忽略常数和低阶项的规则理解不清 |
| 循环复杂度分析 | ⭐⭐⭐ | 选择、程序阅读 | 内层循环次数不仔细数 |
| 对数复杂度来源 | ⭐⭐⭐ | 选择 | 折半/倍增导致 O(log n) 的场景识别 |
| 递归复杂度(递归树 + 主定理) | ⭐⭐ | 选择、判断 | 主定理三种情况混淆(超纲) |
| 快速排序三种情况 | ⭐⭐⭐ | 选择、判断 | 最坏 O(n²) 的触发条件记不清 |
| 空间复杂度(含递归栈) | ⭐⭐⭐ | 选择、判断 | 忽略递归栈空间;原地算法概念不清 |
| 数据范围反推复杂度 | ⭐⭐⭐ | 选择 | 1 秒操作数量级记忆不准 |
| 时空权衡思想 | ⭐⭐ | 选择、判断 | 记忆化/前缀和/哈希的空间代价 |
| 常见算法复杂度对比 | ⭐⭐⭐ | 选择、判断 | 时间/空间/稳定性张冠李戴 |
| 复杂度增长排序 | ⭐⭐⭐ | 选择、判断 | O(√n)、O(n log n) 等中间量级位置记错 |
三、选择题 / 判断题「陷阱」20 条
| # | 常见说法 | 正误 | 一句话理由 |
|---|---|---|---|
| 1 | 1 是素数 | ❌ | 素数要求大于 1 |
| 2 | 所有素数都是奇数 | ❌ | 2 是反例 |
| 3 | 线性筛比埃氏筛快 | ✅ | O(n) vs O(n log log n) |
| 4 | 埃氏筛中合数 12 只被标记一次 | ❌ | 被 2 和 3 重复标记 |
| 5 | 求 lcm 写 a * b / gcd 即可 | ❌ | 会溢出,应先除后乘 |
| 6 | 减法取模 ((a-b)%m) 就够了 | ❌ | C++ 负数取模为负,要 +m 再取模 |
| 7 | 高精度加法需要倒序存储 | ✅ | 进位从低位向高位,倒序方便追加 |
| 8 | 高精度除法也用倒序存储 | ❌ | 除法正序处理,从高位开始 |
| 9 | 高精度加法结果也要去前导零 | ❌ | 进位只在最高位产生,无前导零 |
| 10 | n 位 × m 位结果最多 n+m 位 | ✅ | 严格小于 10^(n+m) |
| 11 | 单链表可以双向遍历 | ❌ | 只有 next 指针 |
| 12 | 循环链表遍历终止条件是 p->next == nullptr | ❌ | 应为 p == head |
| 13 | 链表删除可以先 delete 再改指针 | ❌ | 会产生野指针;应"先暂存、再改指针、最后释放" |
| 14 | 二分查找可以用于任何数组 | ❌ | 前提是有序 |
| 15 | mid = (left+right)/2 是标准写法 | ❌ | 可能整数溢出,用 left + (right-left)/2 |
| 16 | lower_bound 判断条件写 a[mid] == target | ❌ | 应为 >=;upper_bound 为 > |
| 17 | 整数二分 left=mid 时 mid 向下取整没问题 | ❌ | 两元素时死循环,须向上取整 |
| 18 | 快速排序是稳定排序 | ❌ | 归并稳定,快排不稳定 |
| 19 | 归并排序最坏会退化到 O(n²) | ❌ | 始终 O(n log n) |
| 20 | 贪心算法总能得到最优解 | ❌ | 须同时满足贪心选择性质 + 最优子结构 |
四、考前 30 分钟速查卡
┌──────────────────────────────────────────────────────┐
│ GESP 五级 · 考前 30 分钟速查卡 │
├──────────────────────────────────────────────────────┤
│ 【数论】 │
│ gcd(a,b)=gcd(b,a%b);gcd×lcm=a×b;lcm 先除后乘 │
│ 埃氏筛 O(n log log n);线性筛 O(n)+break │
│ 约数个数=∏(ai+1);约数和=∏(1+p+…+p^ai) │
│ 减法取模:(a-b+m)%m │
├──────────────────────────────────────────────────────┤
│ 【链表】 │
│ 遍历 p!=nullptr;循环链表 p==head │
│ 删除:先暂存 → 再改指针 → 最后 delete │
│ 反转三指针:prev/curr/nextTemp,核心 curr->next=prev│
├──────────────────────────────────────────────────────┤
│ 【高精度】 │
│ 加减乘倒序(个位在 0),除法正序 │
│ 加法收尾:carry!=0 → push_back(carry) │
│ 乘法 i+j 位累加,结果开 n+m 位;除法 余数×10+下一位 │
├──────────────────────────────────────────────────────┤
│ 【二分】 │
│ 闭区间 [l,r]:while(l<=r),r=mid-1 │
│ 开区间 [l,r):while(l<r),r=mid │
│ mid = left+(right-left)/2 │
│ left=mid → 向上取整;right=mid → 向下取整 │
├──────────────────────────────────────────────────────┤
│ 【递归】 │
│ 基线条件 + 递归条件;空间 = 递归深度 │
│ 汉诺塔 2ⁿ-1;朴素斐波那契 O(2ⁿ) → 记忆化 O(n) │
│ 回溯三步:选择 → 递归 → 撤销 │
├──────────────────────────────────────────────────────┤
│ 【分治】 │
│ 归并:O(n log n)/O(n)/稳定;快排:O(n log n)/O(log n)/不稳 │
│ 快排最坏 O(n²)(已有序) │
│ 逆序对:合并时 arr[i]>arr[j] → 加 (mid-i+1) │
├──────────────────────────────────────────────────────┤
│ 【贪心】 │
│ 两要素:贪心选择性质 + 最优子结构 │
│ 活动选择按结束时间;区间选点按右端点 │
│ 合并果子用小根堆;排队接水短的在前 │
├──────────────────────────────────────────────────────┤
│ 【复杂度】 │
│ O(1)<O(log n)<O(n)<O(n log n)<O(n²)<O(n³)<O(2ⁿ)<O(n!)│
│ n≤20 → O(2ⁿ);n≤1e5 → O(n log n);n≤1e9 → O(log n) │
│ 递归深度 = 栈空间;辅助空间 O(1) = in-place │
├──────────────────────────────────────────────────────┤
│ 【时间】180 分钟 = 单选 30 + 判断 20 + 编程 50 │
│ 建议:选择判断 40 分钟 / 编程 110 分钟 / 检查 30 分 │
└──────────────────────────────────────────────────────┘本附录由各章「考点总结表」聚合而成;章节修订后请同步更新。
