CURRICULUM
课程大纲 · 能力地图
按「大类 → 难度 → 前后顺序」组织,共 153 个能力标签。 其中 66 个为相对「GESP 4级」新增,其余为前置级别已覆盖; 同一大类内循序渐进,绿色为已备教案、可直接进入学习;灰色为编写中。
新增 标记表示该知识点是「GESP 4级」基础上本级别新加入的,需重点学习。
仅展示相对「GESP 4级」新增的内容 (66)关闭可查看完整大纲(含前置级别已覆盖的知识点)
复杂度与算法分析
10 个标签 · 10 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|
| 48 | O(log n)新增02-A2-1 | 理解 O(log n) 时间复杂度:每次操作把问题规模减半(如二分查找),所需步数约为 log₂n,增长极慢。 | |
| 49 | O(n log n)新增02-A2-2 | 理解 O(n log n):线性乘对数,是归并、快排这类基于比较的排序能达到的最优复杂度。 | |
| 50 | O(n²)新增02-A2-3 | 理解 O(n²):双重循环的典型复杂度,常见于朴素排序与朴素枚举,适合 n 较小的场景。 | |
| 51 | 多项式复杂度新增02-A2-4 | 理解多项式复杂度 O(n^k):运行时间是关于 n 的多项式,次数 k 越低越快。 | |
| 52 | 指数复杂度新增02-A2-5 | 理解指数复杂度 O(2^n) 与 O(c^n):随 n 爆炸增长,常见于暴力枚举/回溯,需要剪枝或换算法。 | |
| 53 | 空间复杂度新增02-A2-6 | 区分时间复杂度与空间复杂度:空间复杂度衡量算法额外占用的内存随 n 的增长。 | |
| 54 | 最坏情况新增02-A2-7 | 理解最坏情况复杂度:输入最不利时算法需要的资源上界,是可靠性的保证。 | |
| 55 | 最好情况新增02-A2-8 | 理解最好情况复杂度:最有利输入下的资源消耗下界,常用于"已接近目标"的快速路径。 | |
| 56 | 平均情况新增02-A2-9 | 理解平均情况复杂度:对所有可能输入取期望,比最坏更贴近"典型"表现。 | |
| 57 | 嵌套循环复杂度新增02-A2-10 | 掌握分析嵌套循环复杂度:内外层循环次数相乘,注意"与 n 无关"的内层与"随外层变化"的内层。 | |
数组与基础预处理
8 个标签 · 8 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|
| 106 | 前缀和新增04-A2-1 | 掌握一维前缀和:预处理 s[i]=a[0..i-1] 的和,使任意区间和 O(1) 查询。 | |
| 107 | 二维前缀和新增04-A2-2 | 掌握二维前缀和:预处理后任意子矩阵和 O(1) 查询,使用容斥公式。 | |
| 108 | 差分新增04-A2-3 | 掌握一维差分:对区间加减的多次操作后,用 O(1) 标记、最后 O(n) 还原,避免每次 O(n) 修改。 | |
| 109 | 二维差分新增04-A2-4 | 掌握二维差分:对子矩阵整体加减,用 O(1) 标记、最后 O(nm) 还原。 | |
| 110 | 前缀最值新增04-A2-5 | 掌握前缀最值:预处理前缀的最大值/最小值,支持 O(1) 查询"从开头到某位置"的极值。 | |
| 111 | 后缀最值新增04-A2-6 | 掌握后缀最值:从某位置到结尾的极值,常与前缀最值配合解决"两侧约束"问题。 | |
| 112 | 前后缀统计新增04-A2-7 | 综合运用前缀与后缀预处理,解决"左侧/右侧满足条件的个数或极值"类问题。 | |
| 113 | 离线预处理新增04-A2-8 | 理解离线思想:先把所有询问收集起来,按某种顺序统一处理(常配合排序或前缀结构),降低总复杂度。 | |
排序
7 个标签 · 7 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|
| 129 | 快速排序新增05-A2-1 | 掌握快速排序:选轴(pivot)分区,使左边≤轴、右边≥轴,再递归处理左右。 | |
| 130 | 归并排序新增05-A2-2 | 掌握归并排序:分治地把两半分别排好,再合并两个有序序列,稳定且稳定 O(n log n)。 | |
| 131 | sort新增05-A2-3 | 掌握语言内置排序(Python sorted / C++ sort)的用法与复杂度,能直接对数组排序。 | |
| 132 | 自定义比较新增05-A2-4 | 掌握自定义比较函数/键,按"自己定义的规则"排序(如按绝对值、按字符串长度)。 | |
| 133 | 多关键字排序新增05-A2-5 | 掌握多关键字排序:先按主关键字,相同再按次关键字(用元组 key 或稳定排序组合)。 | |
| 134 | 结构体排序新增05-A2-6 | 掌握对"结构体/对象数组"按某个字段排序(如学生按成绩)。 | |
| 135 | 稳定排序应用新增05-A2-7 | 掌握"稳定排序"的实际应用:保留并列数据的原有顺序,或实现多关键字排序。 | |
查找与二分
7 个标签 · 7 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|
| 149 | lower_bound新增06-A2-1 | 掌握 lower_bound:在有序数组中找"第一个 ≥ x"的位置(C++ lower_bound / 手写二分)。 | |
| 150 | upper_bound新增06-A2-2 | 掌握 upper_bound:找"第一个 > x"的位置,与 lower_bound 配合统计某值的个数。 | |
| 151 | 二分边界新增06-A2-3 | 掌握二分求"边界":第一个满足 / 最后一个满足某条件的位置(答案落在有序判定函数上)。 | |
| 152 | 二分最大值新增06-A2-4 | 掌握"二分答案求最大":当答案越大越难满足时,二分找满足条件的最大值。 | |
| 153 | 二分最小值新增06-A2-5 | 掌握"二分答案求最小":当答案越小越难满足时,二分找满足条件的最小值。 | |
| 154 | 二分答案新增06-A2-6 | 综合理解"二分答案":把最优化问题转为"判定 mid 是否可行"的二分搜索。 | |
| 155 | 单调性新增06-A2-7 | 理解单调性是二分的前提:只有"判定结果随 mid 单调变化"才能用二分。 | |
递归、分治
5 个标签 · 5 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|
| 190 | 分治思想新增08-A2-1 | 掌握分治:把问题分成独立子问题,各自解决后合并结果(与单纯的递归区别在于"合")。 | |
| 191 | 归并排序新增08-A2-2 | 用"分治"视角重写并理解归并排序的分解与合并过程。 | |
| 192 | 快速排序新增08-A2-3 | 用分治视角理解快排:选轴分区使问题独立,再递归处理左右子区间。 | |
| 193 | 二分递归新增08-A2-4 | 掌握二分递归:在递归中把规模对半(而非减一),复杂度降为 O(log n) 或 O(n log n)。 | |
| 194 | 递归搜索新增08-A2-5 | 掌握用递归进行搜索/枚举(如 DFS 遍历、子集/排列生成),理解搜索树与回溯。 | |
贪心
4 个标签 · 4 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|
| 205 | 贪心思想新增09-A1-1 | 理解贪心:每一步都做"当前看起来最优"的选择,期望得到全局最优。 | |
| 206 | 局部最优新增09-A1-2 | 理解"局部最优"与"全局最优"的关系,学会判断一个问题能否贪心。 | |
| 207 | 简单贪心新增09-A1-3 | 通过经典简单贪心题(区间选点、拼接等)巩固贪心套路。 | |
| 208 | 直接选择新增09-A1-4 | 掌握"直接选择"型贪心:每步直接挑当前最优元素(如选择排序、选最大可用)。 | |
数据结构
5 个标签 · 5 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|
| 263 | 数组新增11线性结构-A1-1 | 掌握数组:连续存储、随机访问 O(1)、按下标读写,是其他数据结构的基础。 | |
| 264 | vector新增11线性结构-A1-2 | 掌握 C++ vector(动态数组):自动扩容、尾部增删 O(1)、随机访问,是可变长数组。 | |
| 265 | stack新增11线性结构-A1-3 | 掌握栈:后进先出(LIFO),支持压栈/弹栈/取顶,常用于括号匹配、DFS。 | |
| 266 | queue新增11线性结构-A1-4 | 掌握队列:先进先出(FIFO),支持入队/出队/看队首,常用于 BFS、缓冲。 | |
| 267 | deque新增11线性结构-A1-5 | 掌握双端队列 deque:两端都能 O(1) 增删,兼具栈与队列功能,常用于滑动窗口。 | |
链表
4 个标签 · 4 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|
| 283 | 单链表新增12-A1-1 | 掌握单链表:节点含值域与 next 指针,只能单向遍历,插入/删除只需改指针 O(1)(已知前驱)。 | |
| 284 | 双链表新增12-A1-2 | 掌握双链表:节点含 prev 与 next,可双向遍历,删除/插在前驱或后继都方便。 | |
| 285 | 循环链表新增12-A1-3 | 理解循环链表:尾节点 next 指向头,形成环,适合"轮转/环形"场景。 | |
| 286 | 链表遍历新增12-A1-4 | 掌握链表遍历与常见处理:从头指针沿 next 走到尾,期间可计数、查找、反转等。 | |
位运算 / 状态压缩
5 个标签 · 5 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|
| 503 | 位掩码新增23-A2-1 | 理解位掩码:用一个整数的二进制位表示一组布尔状态,第 i 位为 1 表示第 i 个选项被选中。 | |
| 504 | 集合表示新增23-A2-2 | 用整数表示一个有限集合(元素为 0..N-1),元素 i 在集合中当且仅当第 i 位为 1。 | |
| 505 | 子集判断新增23-A2-3 | 掌握用位运算判断一个集合是否为另一个集合的子集/超集,以及如何枚举子集。 | |
| 506 | lowbit新增23-A2-4 | 掌握 lowbit:取出整数二进制最低位的 1 及其后的 0 所构成的值,公式为 x & (-x)。 | |
| 507 | popcount新增23-A2-5 | 掌握 popcount(统计整数二进制中 1 的个数),以及位运算统计技巧。 | |
数学与数论
7 个标签 · 7 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|
| 523 | 欧几里得算法新增24基础数论-A2-1 | 掌握欧几里得算法(辗转相除法)求最大公约数 gcd:gcd(a,b)=gcd(b,a mod b)。 | |
| 524 | 埃氏筛新增24基础数论-A2-2 | 掌握埃拉托斯特尼筛法(埃氏筛)在 O(n log log n) 内求出 [2,n] 内的所有素数。 | |
| 525 | 线性筛新增24基础数论-A2-3 | 理解线性筛(欧拉筛):每个合数只被其最小质因子筛一次,达到 O(n) 求素数。 | |
| 526 | 唯一分解定理新增24基础数论-A2-4 | 理解算术基本定理:任一大于 1 的整数可唯一分解为若干素数幂的乘积。 | |
| 527 | 快速幂新增24基础数论-A2-5 | 掌握二进制快速幂,在 O(log b) 内计算 a^b(或 a^b mod m)。 | |
| 528 | 模运算新增24基础数论-A2-6 | 掌握模运算基本律:加、减、乘可分别在模内运算,注意减法与除法(逆元)的处理。 | |
| 529 | 模逆元基础新增24基础数论-A2-7 | 理解模逆元:在模 m 下,若 gcd(a,m)=1,则存在 a⁻¹ 使 a·a⁻¹ ≡ 1 (mod m);当 m 为素数可用费马小定理。 | |
组合数学
4 个标签 · 4 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|
| 545 | 加法原理新增25-A1-1 | 理解加法原理:完成一件事有若干类互斥的方法,总方法数等于各类方法数之和。 | |
| 546 | 乘法原理新增25-A1-2 | 理解乘法原理:完成一件事需若干步,每步方法数相乘得总数。 | |
| 547 | 基础排列新增25-A1-3 | 掌握排列数:从 n 个不同元素中取 k 个排成一列的方法数 P(n,k)=n!/(n-k)!。 | |
| 548 | 基础组合新增25-A1-4 | 掌握组合数:从 n 个不同元素中取 k 个(不计顺序)的方法数 C(n,k)=n!/(k!(n-k)!),并知 C(n,k)=C(n,n-k)。 | |