← 竞赛体系
COURSE · 课程路径

GESP 7级

CURRICULUM

课程大纲 · 能力地图

按「大类 → 难度 → 前后顺序」组织,共 269 个能力标签。 其中 60 个为相对「GESP 6级」新增,其余为前置级别已覆盖; 同一大类内循序渐进,绿色为已备教案、可直接进入学习;灰色为编写中。

新增 标记表示该知识点是「GESP 6级」基础上本级别新加入的,需重点学习。

仅展示相对「GESP 6级」新增的内容 (60)关闭可查看完整大纲(含前置级别已覆盖的知识点)

双指针与滑动窗口

5 个标签 · 5 已就绪
序号知识点能力目标操作
173双指针求区间新增07-A2-1掌握同向双指针(尺取法):用左右指针维护一个区间,根据条件移动右/左指针,高效求出满足某约束的区间。
174双指针求和新增07-A2-2掌握对有序数组用双指针求“和为定值”的组合:两数之和直接左右夹逼,三数之和排序后枚举首元素再双指针。
175滑动窗口新增07-A2-3掌握滑动窗口技巧:在数组/字符串上维护一个随指针滑动的窗口,用哈希或计数实时更新窗口内统计量(和、最值、种类数)。
176最长满足条件区间新增07-A2-4用可变滑动窗口求“最长满足某约束的区间”,如最多含 k 个不同字符、或子数组和≤K,掌握“超界即收缩”的模板。
177最短满足条件区间新增07-A2-5用可变窗口求“最短覆盖某条件的区间”,如包含全部目标字符、或子数组和≥S,掌握“满足条件才尝试收缩”。

搜索

10 个标签 · 10 已就绪
序号知识点能力目标操作
231连通块新增10DFS-A2-1用 DFS 在无向/有向图上求连通分量个数与每个块包含的节点,理解“从每个未访问点出发能到达的全部点”构成一个分量。
232全排列新增10DFS-A2-2掌握含重复元素的全排列:排序后用“同一层相同值只用一次”的剪枝避免重复排列,理解回溯中“层内去重”。
233组合新增10DFS-A2-3用回溯枚举从 n 个元素中选 k 个的所有组合,理解“按位置升序选”以避免重复并自然去重。
234子集新增10DFS-A2-4在子集枚举基础上加入约束(如子集和等于目标、或大小限制),掌握“选/不选 + 剪枝”的回溯框架。
235回溯新增10DFS-A2-5归纳回溯的通用范式:做选择→递归→撤销选择;并掌握两类剪枝——可行性剪枝与最优性剪枝,用以削减搜索树。
236状态搜索新增10DFS-A2-6把“状态”当作节点进行 DFS/回溯搜索:状态含当前位置、已收集物等;通过 visited 记录已搜状态避免重复与环。
252多源 BFS新增10BFS-A2-1掌握多源 BFS:把所有起点同时入队(距离 0),一次遍历即求每个点到最近起点的距离,常用于“最近设施”“地图扩散”。
253分层 BFS新增10BFS-A2-2掌握分层 BFS:用“每层结束标记”或“按层循环”依次处理同一距离的所有节点,便于层序遍历与按层统计。
254状态 BFS新增10BFS-A2-3把“状态”作为 BFS 节点求最短步数(边权为 1):状态=(位置,朝向/钥匙/已访问集合),用 visited 去重保证首次到达即最短。
255BFS + 状态新增10BFS-A2-4掌握双向 BFS:从起点与终点同时扩展,相遇时停止,可指数级减少搜索量;适用于状态空间大但路径深的场景。

链表

4 个标签 · 4 已就绪
序号知识点能力目标操作
287插入删除新增12-A2-1掌握单链表在指定位置/按值插入与删除节点的指针操作:插入要“先连后断”防止断链,删除要记得释放/跳过。
288链表反转新增12-A2-2掌握单链表反转的迭代与递归两种写法:迭代用三指针(prev/cur/next)逐个翻转指向,递归从尾部回溯翻转。
289快慢指针新增12-A2-3掌握快慢指针(龟兔赛跑):快指针走两步、慢指针走一步,可判环、求中点、找倒数第 k 个节点。
290链表合并新增12-A2-4掌握合并两个升序链表:用 dummy 哨兵节点,比较两链表头节点值,小的接上并后移,最后接剩余。

堆与优先队列

4 个标签 · 4 已就绪
序号知识点能力目标操作
348堆排序思想新增15-A2-1掌握二叉堆(优先队列):Python 用 heapq(默认最小堆),C++ 用 priority_queue;理解 push/pop/top 与“取最小/最大”的语义。
349Top K新增15-A2-2理解堆排序:先建堆(heapify),再反复取堆顶与末尾交换并下沉,得到升序序列;理解原地排序与 O(n log n)。
350动态最大/最小值新增15-A2-3用堆在 O(n log k) 求第 k 大/小元素:维护一个大小为 k 的堆,或基于快速选择;理解堆法比全排序更省。
351贪心 + 堆新增15-A2-4掌握用堆合并多个有序序列(如 K 个有序链表、数据流 TopK 汇总),理解“每个序列一个指针 + 最小堆选最小”的模式。

图论

14 个标签 · 14 已就绪
序号知识点能力目标操作
395图的定义新增18图基础-A1-1掌握图的两种存储:邻接表(vector<vector<int>>,省空间、遍历快)与邻接矩阵(二维数组,查边 O(1) 但费空间);按稠密/稀疏选结构。
396点新增18图基础-A1-2掌握在一般图上做 DFS/BFS 遍历:用 visited 数组防止重复访问(图可能成环),得到从某点出发能到达的所有节点与遍历序。
397边新增18图基础-A1-3掌握拓扑排序:对有向无环图(DAG)排出顶点顺序,使每条边 u→v 中 u 在 v 前;用 Kahn 算法(入度队列)或 DFS 后序。
398度新增18图基础-A1-4掌握 Dijkstra:在非负权图上求单源最短路,用最小堆每次取距离最小的点松弛其邻边;复杂度 O((V+E) log V)。
399有向图新增18图基础-A1-5掌握可处理负权的单源最短路:Bellman-Ford 对所有边松弛 V-1 轮;SPFA 用队列优化,并在入队次数≥V 时判定负环。
400无向图新增18图基础-A1-6掌握 Kruskal 求最小生成树:把所有边按权升序,用并查集依次加入不形成环的边,直到选够 V-1 条。
401邻接矩阵新增18图基础-A1-7掌握 Prim 求最小生成树:从一点出发,用最小堆不断把“未访问点中离已选集合最近的边”对应的点加入集合,直到覆盖所有点。
402邻接表新增18图基础-A1-8掌握并查集:find(路径压缩)与 union(按秩/大小合并),用于动态连通性、Kruskal、集合计数;近乎 O(1) 每操作。
403图 DFS新增18图基础-A2-1掌握二分图判定:用两种颜色对图染色,相邻点异色;DFS/BFS 染色时若遇同色相邻则非二分图。
404图 BFS新增18图基础-A2-2掌握欧拉路判定:无向图中每个点度数均为偶则有欧拉回路;恰两个奇度点则有欧拉路(起自奇度点);用 Hierholzer 输出路径。
405连通分量新增18图基础-A2-3掌握求树(或无权图)直径:两次 BFS/DFS——任选点求最远点 u,再从 u 求最远点 v,u 到 v 距离即直径。
406Flood Fill新增18图基础-A2-4掌握倍增法求 LCA:预处理每个点向上 2^k 步的祖先 up[u][k],查询时先把两点提到同一深度,再同步上跳找分叉点上方。
407路径新增18图基础-A2-5掌握负环检测:在 SPFA/Bellman-Ford 中,若某点被松弛(入队)次数达到 n 次以上,说明存在可无限缩短的负权环。
408环新增18图基础-A2-6掌握在 Dijkstra/BFS 过程中统计最短路径条数:当找到更短路径时刷新条数,当找到等长路径时累加条数(取模)。

动态规划

12 个标签 · 12 已就绪
序号知识点能力目标操作
47201背包新增22DP基础-A3-1掌握两类经典线性 DP:最长递增子序列(LIS,O(n log n))与最长公共子序列(LCS,O(nm)),理解状态定义与转移。
473完全背包新增22DP基础-A3-2掌握多重背包的两种优化:二进制拆分将数量拆成 2 的幂转化为 0/1 背包;单调队列优化做到 O(nV)。
474多重背包新增22DP基础-A3-3掌握在树上做 DP:选/不选类(最大独立集)、树上背包(子树合并),用 DFS 后序在子树状态上转移。
475分组背包新增22DP基础-A3-4掌握区间 DP:状态 dp[l][r] 表示子区间 [l,r] 的最优值,长度从小到大枚举,由短区间合并成长区间。
476LIS新增22DP基础-A3-5掌握状压 DP:当状态维度小(如 n≤12)时,用二进制整数表示每一行/列的状态,逐行转移并保证行间约束合法。
477LCS新增22DP基础-A3-6掌握数位 DP:统计满足数位约束(如不含 4、数字和、特定子串)的整数个数,按位从高到低记忆化搜索,用 up 限制上界。
478区间 DP新增22DP基础-A3-7掌握概率/期望 DP:以状态为随机变量,用 E = Σ p·v 或全期望公式递推期望;注意循环转移时的移项求解。
479状态压缩 DP新增22DP基础-A3-8掌握用状压 DP 解旅行商 TSP:dp[mask][i] 表示已访问集合 mask 且当前在城市 i 的最小代价,枚举下一未访问城市转移。
480树形 DP新增22DP基础-A3-9掌握用单调队列优化形如 dp[i]=min_{j}(dp[j]+f(i,j)) 的 DP:当 f 可拆成只关于 i 与只关于 j 的部分时,用滑动窗口维护最优 j。
481DAG DP新增22DP基础-A3-10掌握博弈类 DP/递推:用 win[i] 表示面对局面 i 是否必胜(存在一步到必败态即可胜),常用于 Nim 及组合游戏规则分析。
482计数 DP新增22DP基础-A3-11掌握字符串类 DP:编辑距离(插入/删除/替换的最小操作数)与最长回文子序列,理解二维 DP 在字符串上的转移。
483概率 DP新增22DP基础-A3-12掌握 DP 的通用建模思路:明确状态、转移、边界与答案位置;并能把复杂问题拆成上述经典 DP 的组合或变形。

哈希

8 个标签 · 8 已就绪
序号知识点能力目标操作
600哈希表概念新增28-A1-1理解哈希表:通过哈希函数把键映射到桶;不同键映射到同桶即冲突,介绍链地址法与开放寻址法两种解决思路。
601set新增28-A1-2对比哈希冲突的两种解法:链地址法(桶挂链表,删除方便)与开放寻址法(线性/二次/双重探测,缓存友好但易聚集)。
602map新增28-A1-3掌握字符串滚动哈希:把字符串视作 P 进制数模大素数,配合前缀哈希可在 O(1) 比较任意子串是否相等,用于 Rabin-Karp 与字符串判重。
603unordered_map新增28-A2-1理解哈希函数的设计目标(均匀、稳定、快速)与常见方法:除留余数、乘法哈希、以及字符串/结构的组合哈希;介绍位扰动减少低位聚集。
604unordered_set新增28-A2-2掌握双哈希(用两个独立哈希函数降低冲突/碰撞)与布隆过滤器(多个哈希位构成的位数组,支持高效近似“可能存在/一定不存在”)。
605计数哈希新增28-A2-3掌握 Rabin-Karp:对模式串与文本每个长度为 m 的窗口计算滚动哈希,哈希相等再逐字符确认,从而在平均 O(n) 完成多模式/子串匹配。
606去重新增28-A2-4理解一致性哈希:把节点与键都哈希到同一个圆环上,键沿顺时针找最近节点;引入虚拟节点使负载均衡,常用于分布式缓存扩容。
607哈希映射新增28-A2-5综合运用哈希:在查重、计数、缓存、字符串判等、集合判同等场景中正确选择哈希结构,并理解其时间/空间权衡与碰撞应对。

区间与离线算法

3 个标签 · 3 已就绪
序号知识点能力目标操作
628区间概念新增30-A1-1掌握一维/二维前缀和(O(1) 求区间和)与差分(O(1) 区间加),理解“前缀预处理 + 相减”与“差分数组还原”的互逆技巧。
629区间求和新增30-A1-2理解离线思想:先把所有询问/事件收集,按某种顺序(如坐标、时间)统一处理,常比逐个在线处理更高效。以扫描线求矩形并面积、区间计数引入。
630区间最值新增30-A1-3综合区间类问题:区分“多查询少更新”(前缀和)、“多更新少查询”(差分)、“在线动态”(树状数组/线段树),并能离线处理复杂区间统计。