← 竞赛体系
COURSE · 课程路径
GESP 6级
CURRICULUM
课程大纲 · 能力地图
按「大类 → 难度 → 前后顺序」组织,共 209 个能力标签。 其中 56 个为相对「GESP 5级」新增,其余为前置级别已覆盖; 同一大类内循序渐进,绿色为已备教案、可直接进入学习;灰色为编写中。
新增 标记表示该知识点是「GESP 5级」基础上本级别新加入的,需重点学习。
仅展示相对「GESP 5级」新增的内容 (56)关闭可查看完整大纲(含前置级别已覆盖的知识点)
双指针与滑动窗口
3 个标签 · 3 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|---|---|---|
| 170 | 左右指针新增07-A1-1 | 掌握归并排序:用分治把数组分成两半分别排序,再合并两个有序序列,整体达到 O(n log n)。 | |
| 171 | 同向双指针新增07-A1-2 | 理解归并过程可顺带统计逆序对数量,把“计数”问题转化为分治合并时的跨段计数。 | |
| 172 | 区间移动新增07-A1-3 | 掌握非比较排序:计数排序用“值域桶”统计出现次数,桶排序把值域分桶后桶内再排,突破 O(n log n) 下界。 |
贪心
6 个标签 · 6 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|---|---|---|
| 209 | 排序贪心新增09-A2-1 | 理解贪心算法的两个支柱:贪心选择性质(局部最优能导向全局最优)与最优子结构;并掌握“交换论证”证明。 | |
| 210 | 区间贪心新增09-A2-2 | 熟练区间调度:按结束时间升序,依次选取与已选不冲突的区间,得到最多互不重叠区间。 | |
| 211 | 交换贪心新增09-A2-3 | 掌握两类区间贪心:用最少点“刺穿”所有区间(按结束时间,在交集末放点);用最少区间覆盖 [0,T](按开始时间,选能接上的结束最晚者)。 | |
| 212 | 优先队列贪心新增09-A2-4 | 理解哈夫曼贪心:每次合并两个最小权值,使总代价最小;用于最优前缀码与合并果子等问题。 | |
| 213 | 活动选择新增09-A2-5 | 掌握“先排序再贪心”的模式:按性价比、按比值、按字典序等排序后顺序选取,常见于任务安排与拼接问题。 | |
| 214 | 区间调度新增09-A2-6 | 掌握两类调度贪心:任务有截止时间求最多完成数(按截止时间贪心+可反悔);负载均衡用“最长处理时间优先”近似。 |
搜索
9 个标签 · 9 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|---|---|---|
| 226 | DFS 基础新增10DFS-A1-1 | 掌握深度优先搜索:用递归(或栈)沿着一条路走到底再回溯,遍历所有状态/节点。 | |
| 227 | 图 DFS新增10DFS-A1-2 | 用 DFS 判断两点是否连通、统计连通块个数,理解“从一个点能到达的所有点”构成连通块。 | |
| 228 | 树 DFS新增10DFS-A1-3 | 用 DFS 回溯系统地枚举所有方案(全排列、子集),并在递归返回前“恢复现场”以尝试其他分支。 | |
| 229 | 网格 DFS新增10DFS-A1-4 | 用 DFS 的三色标记(白/灰/黑)检测有向图是否存在环:遇到“灰色”祖先说明有回边即环。 | |
| 230 | Flood Fill新增10DFS-A1-5 | 用 DFS(逆后序)求出有向无环图的拓扑排序:每次离开节点时把它加入答案头部。 | |
| 248 | BFS新增10BFS-A1-1 | 掌握广度优先搜索:用队列逐层扩展,先访问离起点近的节点,适合求最短路与层序遍历。 | |
| 249 | 网格 BFS新增10BFS-A1-2 | 用 BFS 求无权图(边权均为 1)从起点到各点的最短距离,首次访问即定距,避免重复入队。 | |
| 250 | 最短步数新增10BFS-A1-3 | 掌握多源 BFS:把所有起点同时入队(距离 0),一次 BFS 即求每个点到最近起点的距离。 | |
| 251 | Flood Fill新增10BFS-A1-4 | 在网格上用 BFS(Flood Fill)求连通块大小、数量与最远格,理解“四连通/八连通”的邻居扩展。 |
数据结构
5 个标签 · 5 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|---|---|---|
| 268 | priority_queue新增11线性结构-A2-1 | 巩固栈的“后进先出”:用栈判断括号是否匹配,并理解中缀转后缀后用栈求值。 | |
| 269 | set新增11线性结构-A2-2 | 理解循环队列:用定长数组 + 头尾指针(取模)实现 O(1) 入队出队,区分“满”与“空”。 | |
| 270 | map新增11线性结构-A2-3 | 掌握双端队列:两端都可 O(1) 入队/出队,用于滑动窗口、单调队列等进阶场景。 | |
| 271 | unordered_set新增11线性结构-A2-4 | 掌握单调栈:维护栈内元素单调递增/减,在线性时间内求“左边/右边第一个更大(更小)元素”。 | |
| 272 | unordered_map新增11线性结构-A2-5 | 掌握单调队列:用 deque 维护窗口内元素的单调位置,O(n) 求滑动窗口最大值/最小值。 |
树
15 个标签 · 15 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|---|---|---|
| 311 | 树的定义新增14基础树-A1-1 | 理解树的定义与基本术语:根、父/子、叶子、度、深度、高度,以及二叉树与多叉树的区别。 | |
| 312 | 根新增14基础树-A1-2 | 掌握二叉树的重要性质:第 i 层最多 2^(i-1) 个节点,深度为 h 的二叉树最多 2^h-1 个节点,叶子与度为 2 节点数关系。 | |
| 313 | 父节点新增14基础树-A1-3 | 区分满二叉树(每层全满)与完全二叉树(层序填满、最后一层从左连续),并理解完全二叉树用数组存储的优势。 | |
| 314 | 子节点新增14基础树-A1-4 | 掌握二叉树的顺序存储(数组按下标表示左右孩子),理解其适合完全二叉树、对一般树有空洞浪费。 | |
| 315 | 叶节点新增14基础树-A1-5 | 掌握二叉树的链式存储:用节点结构(val, left, right)动态建树,理解它与顺序存储的取舍。 | |
| 316 | 深度新增14基础树-A1-6 | 掌握三种深度遍历的递归写法:先序(根左右)、中序(左根右)、后序(左右根),理解访问根的顺序差异。 | |
| 317 | 高度新增14基础树-A1-7 | 掌握用“先序定根 + 中序定左右”递归重建二叉树的方法,并理解其唯一性条件。 | |
| 318 | 二叉树新增14基础树-A2-1 | 掌握二叉树的层序遍历:用队列按层扩展,输出逐层节点,可顺便记录每层或判断完全性。 | |
| 319 | 二叉树遍历新增14基础树-A2-2 | 掌握用栈模拟递归实现先/中/后序遍历,理解递归隐式栈的显式化,避免深递归溢出。 | |
| 320 | 前序新增14基础树-A2-3 | 理解二叉搜索树(BST):左子树均小于根、右子树均大于根;掌握递归/迭代查找,复杂度与树高相关。 | |
| 321 | 中序新增14基础树-A2-4 | 掌握 BST 插入:沿查找路径下行,遇空位插入新节点,保持 BST 性质。 | |
| 322 | 后序新增14基础树-A2-5 | 掌握 BST 删除的三种情况:删叶子直接去、删单孩子接上、删双孩子用“前驱/后继”替换后递归删除。 | |
| 323 | 层序新增14基础树-A2-6 | 掌握哈夫曼树:每次合并权值最小的两节点构造带权路径长度最小的二叉树,并生成前缀编码。 | |
| 324 | 完全二叉树新增14基础树-A2-7 | 理解表达式树:把算式建成二叉树(叶子为操作数、内部为运算符),通过后序/中序遍历求值与还原。 | |
| 325 | 二叉搜索树新增14基础树-A2-8 | 综合运用遍历:求树高、节点数、直径,以及“由中序+后序重建”,巩固遍历在树问题中的核心地位。 |
堆与优先队列
4 个标签 · 4 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|---|---|---|
| 344 | 堆概念新增15-A1-1 | 理解堆:一种完全二叉树,且父节点“不小于/不大于”孩子(大根/小根),根即最值,支持 O(log n) 取最值。 | |
| 345 | 最大堆新增15-A1-2 | 区分大根堆(取最大)与小根堆(取最小),并理解在 STL/Python 中如何用优先队列实现两者。 | |
| 346 | 最小堆新增15-A1-3 | 掌握堆的核心操作:插入时“上浮”(与父比较交换),删除堆顶时“下沉”(与较小/较大孩子比较交换),均 O(log n)。 | |
| 347 | priority_queue新增15-A1-4 | 掌握堆排序(原地建堆后反复取堆顶放末尾,O(n log n))及优先队列在 TopK、中位数、Dijkstra 等场景的应用。 |
动态规划
10 个标签 · 10 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|---|---|---|
| 462 | DP思想新增22DP基础-A1-1 | 理解 DP 三要素:状态定义、状态转移方程、边界/初始;用“大问题=小问题组合”避免重复计算。 | |
| 463 | 状态新增22DP基础-A1-2 | 掌握自顶向下 DP:用递归 + 缓存(记忆化)避免重复子问题,与自底向上填表等价且更易写出。 | |
| 464 | 转移新增22DP基础-A1-3 | 掌握 LIS:dp[i]=以 a[i] 结尾的最长上升子序列长度,O(n²);以及用“贪心+二分”的 O(n log n) 优化。 | |
| 465 | 初始状态新增22DP基础-A1-4 | 掌握 LCS:二维 DP,dp[i][j] 为 a 前 i 与 b 前 j 的 LCS 长度,相等则 +1,否则取两侧最大。 | |
| 466 | 终止状态新增22DP基础-A1-5 | 用数字三角形巩固线性 DP:自底向上,每个点取左下/右下较大者累加,得到从顶到的最大路径和。 | |
| 467 | 一维 DP新增22DP基础-A2-1 | 掌握 0-1 背包:n 件物品每种至多选一次,dp[i][j] 为前 i 件在容量 j 下的最大价值,转移“选/不选”。 | |
| 468 | 二维 DP新增22DP基础-A2-2 | 掌握完全背包:每种物品可无限选,转移时容量正序枚举(同一物品可被重复选多次)。 | |
| 469 | 网格 DP新增22DP基础-A2-3 | 理解背包为何能滚动到一维:当前行只依赖上一行,故用一维数组并按特定顺序更新即可省去第一维。 | |
| 470 | 记忆化搜索新增22DP基础-A2-4 | 掌握两类背包变体:多重背包(每种有数量上限,可二进制拆分转化为 0-1)与分组背包(每组至多选一件)。 | |
| 471 | 简单背包新增22DP基础-A2-5 | 用两个经典模型巩固 DP:网格最小路径和(只能右/下)与编辑距离(增删改使两串相同),体会状态设计。 |
数学优化
4 个标签 · 4 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|---|---|---|
| 566 | 前缀公式新增26-A2-1 | 掌握快速幂:用二进制拆分指数,把 a^b 在 O(log b) 内算出,并支持模运算防止溢出。 | |
| 567 | 数学建模新增26-A2-2 | 掌握 GCD(辗转相除)与扩展欧几里得(求 ax+by=gcd(a,b) 的一组整数解),用于同余与逆元。 | |
| 568 | 函数单调性新增26-A2-3 | 掌握埃氏筛与欧拉筛(线性筛)求区间内素数,并用以做质因数分解,支持数论类题目。 | |
| 569 | 不等式新增26-A2-4 | 理解乘法逆元:在模 p(素数)下,a 的逆元满足 a·a⁻¹≡1,可用费马小定理(a^(p-2))或 exgcd 求得,用于“除法取模”。 |
