← 竞赛体系
COURSE · 课程路径
USACO Silver
CURRICULUM
课程大纲 · 能力地图
按「大类 → 难度 → 前后顺序」组织,共 215 个能力标签。 其中 135 个为相对「USACO Bronze」新增,其余为前置级别已覆盖; 同一大类内循序渐进,绿色为已备教案、可直接进入学习;灰色为编写中。
新增 标记表示该知识点是「USACO Bronze」基础上本级别新加入的,需重点学习。
仅展示相对「USACO Bronze」新增的内容 (135)关闭可查看完整大纲(含前置级别已覆盖的知识点)
程序设计基础
14 个标签 · 14 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|---|---|---|
| 18 | 嵌套循环新增01-A2-1 | 掌握"嵌套循环":在循环中再套循环,用来扫描二维结构(矩阵、棋盘)或枚举组合。 | |
| 19 | 嵌套分支新增01-A2-2 | 掌握"嵌套分支":在 if 内部再写 if/else,处理多维条件,并理解 else 与哪个 if 配对。 | |
| 20 | 多条件逻辑新增01-A2-3 | 掌握用 and/or/not(C++ 的 &&/||/!)组合多个布尔条件,正确写出复合判断,并理解短路求值。 | |
| 21 | 类型转换新增01-A2-4 | 理解隐式/显式类型转换,分清整数除法与浮点除法,避免取整与精度错误。 | |
| 22 | long long新增01-A2-5 | 知道 int 范围有限,大数用 long long(C++ 64 位整数)避免溢出。 | |
| 23 | 浮点数基础新增01-A2-6 | 理解浮点数的二进制近似表示与精度坑(相等比较、累积误差),会用 EPS 比较。 | |
| 24 | 字符与 ASCII新增01-A2-7 | 理解字符在计算机中以 ASCII 码存储,掌握字符与整数的互换及常用字符区间。 | |
| 25 | 函数新增01-A2-8 | 能把一段功能封装成函数,理解定义、调用、返回值,实现"一次编写、多处复用"。 | |
| 26 | 参数传递新增01-A2-9 | 理解 C++ 的"值传递"——函数收到的是实参的副本,修改形参不影响外部;并知道如何把结果交回。 | |
| 27 | 引用新增01-A2-10 | 理解 C++ 引用(变量的别名),用引用参数让函数修改外部变量或避免大对象拷贝。 | |
| 28 | 作用域新增01-A2-11 | 理解变量作用域(局部/全局)与可见性,避免命名冲突与"未定义"错误。 | |
| 29 | 递归基础新增01-A2-12 | 理解"函数调用自身"的递归思想:把大问题拆成相同的小问题,并写出正确的终止条件。 | |
| 30 | 结构体新增01-A2-13 | 能把多个不同类型的数据组合成一个"结构体"类型,管理一组相关属性。 | |
| 31 | 自定义数据类型新增01-A2-14 | 理解 typedef/using 与枚举 enum,给已有类型起别名、定义有限取值集合,提升可读性。 |
复杂度与算法分析
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 个标签 · 0 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|---|---|---|
| 86 | 完全搜索新增03-A3-1 | 课程框架已就绪,教案待补充。 | 编写中 |
| 87 | 递归枚举新增03-A3-2 | 课程框架已就绪,教案待补充。 | 编写中 |
| 88 | 子集枚举新增03-A3-3 | 课程框架已就绪,教案待补充。 | 编写中 |
| 89 | 排列枚举新增03-A3-4 | 课程框架已就绪,教案待补充。 | 编写中 |
| 90 | 状态枚举新增03-A3-5 | 课程框架已就绪,教案待补充。 | 编写中 |
| 91 | 枚举 + 剪枝新增03-A3-6 | 课程框架已就绪,教案待补充。 | 编写中 |
| 92 | 枚举 + 数学新增03-A3-7 | 课程框架已就绪,教案待补充。 | 编写中 |
| 93 | 枚举 + 二分新增03-A3-8 | 课程框架已就绪,教案待补充。 | 编写中 |
数组与基础预处理
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 单调变化"才能用二分。 |
双指针与滑动窗口
8 个标签 · 8 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|---|---|---|
| 170 | 左右指针新增07-A1-1 | 掌握归并排序:用分治把数组分成两半分别排序,再合并两个有序序列,整体达到 O(n log n)。 | |
| 171 | 同向双指针新增07-A1-2 | 理解归并过程可顺带统计逆序对数量,把“计数”问题转化为分治合并时的跨段计数。 | |
| 172 | 区间移动新增07-A1-3 | 掌握非比较排序:计数排序用“值域桶”统计出现次数,桶排序把值域分桶后桶内再排,突破 O(n log n) 下界。 | |
| 173 | 双指针求区间新增07-A2-1 | 掌握同向双指针(尺取法):用左右指针维护一个区间,根据条件移动右/左指针,高效求出满足某约束的区间。 | |
| 174 | 双指针求和新增07-A2-2 | 掌握对有序数组用双指针求“和为定值”的组合:两数之和直接左右夹逼,三数之和排序后枚举首元素再双指针。 | |
| 175 | 滑动窗口新增07-A2-3 | 掌握滑动窗口技巧:在数组/字符串上维护一个随指针滑动的窗口,用哈希或计数实时更新窗口内统计量(和、最值、种类数)。 | |
| 176 | 最长满足条件区间新增07-A2-4 | 用可变滑动窗口求“最长满足某约束的区间”,如最多含 k 个不同字符、或子数组和≤K,掌握“超界即收缩”的模板。 | |
| 177 | 最短满足条件区间新增07-A2-5 | 用可变窗口求“最短覆盖某条件的区间”,如包含全部目标字符、或子数组和≥S,掌握“满足条件才尝试收缩”。 |
递归、分治
9 个标签 · 9 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|---|---|---|
| 186 | 递归思想新增08-A1-1 | 理解递归思想:把"规模为 n 的问题"转化为"一个或多个规模更小的同类子问题",直到小到能直接解决。 | |
| 187 | 递归函数新增08-A1-2 | 能把递归思想写成真正的递归函数:函数体内调用自身,并正确传递缩小后的参数。 | |
| 188 | 递归终止条件新增08-A1-3 | 掌握写好递归的"第一要素":明确且正确的终止条件(base case),保证递归能停下来。 | |
| 189 | 简单递归新增08-A1-4 | 通过几个经典小例子(求和、数字各位和、幂、打印)巩固递归写法,体会"相信子问题已解决"。 | |
| 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 遍历、子集/排列生成),理解搜索树与回溯。 |
贪心
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 | 掌握两类调度贪心:任务有截止时间求最多完成数(按截止时间贪心+可反悔);负载均衡用“最长处理时间优先”近似。 |
搜索
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 去重保证首次到达即最短。 | |
| 255 | BFS + 状态新增10BFS-A2-4 | 掌握双向 BFS:从起点与终点同时扩展,相遇时停止,可指数级减少搜索量;适用于状态空间大但路径深的场景。 |
图论
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 距离即直径。 | |
| 406 | Flood Fill新增18图基础-A2-4 | 掌握倍增法求 LCA:预处理每个点向上 2^k 步的祖先 up[u][k],查询时先把两点提到同一深度,再同步上跳找分叉点上方。 | |
| 407 | 路径新增18图基础-A2-5 | 掌握负环检测:在 SPFA/Bellman-Ford 中,若某点被松弛(入队)次数达到 n 次以上,说明存在可无限缩短的负权环。 | |
| 408 | 环新增18图基础-A2-6 | 掌握在 Dijkstra/BFS 过程中统计最短路径条数:当找到更短路径时刷新条数,当找到等长路径时累加条数(取模)。 |
最短路
2 个标签 · 0 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|---|---|---|
| 421 | 网格最短路新增19-A1-1 | 课程框架已就绪,教案待补充。 | 编写中 |
| 422 | BFS 最短路新增19-A1-2 | 课程框架已就绪,教案待补充。 | 编写中 |
动态规划
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:网格最小路径和(只能右/下)与编辑距离(增删改使两串相同),体会状态设计。 |
位运算 / 状态压缩
12 个标签 · 12 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|---|---|---|
| 496 | 二进制新增23-A1-1 | 理解十进制与二进制的互转、位权概念,以及整数以补码存储。 | |
| 497 | 位与新增23-A1-2 | 掌握按位与 &——对应位都为 1 才为 1,常用于判奇偶、取某些位、清位。 | |
| 498 | 位或新增23-A1-3 | 掌握按位或 |——对应位有 1 则为 1,常用于置位(把某位置 1)、合并标志位。 | |
| 499 | 位非新增23-A1-4 | 理解按位取反 ~(含补码陷阱),并用它配合 & 来清位。 | |
| 500 | 异或新增23-A1-5 | 掌握按位异或 ^——相同为 0、不同为 1,利用其自反性做无临时变量交换与"找出现奇数次的数"。 | |
| 501 | 左移新增23-A1-6 | 理解左移 <<——在不溢出时等价于乘 2^k,用于快速乘除、构造掩码、取位。 | |
| 502 | 右移新增23-A1-7 | 理解右移 >>——等价于除以 2^k(向下取整),用于快速除二、取位、统计二进制中 1 的个数。 | |
| 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 的个数),以及位运算统计技巧。 |
数学与数论
5 个标签 · 5 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|---|---|---|
| 518 | 奇偶性新增24基础数论-A1-1 | 理解整数的奇偶:能被 2 整除为偶数,否则为奇数;掌握用取模或位运算判断奇偶。 | |
| 519 | 最大公约数新增24基础数论-A1-2 | 掌握用欧几里得算法(辗转相除法)求两个数的最大公约数 gcd。 | |
| 520 | 最小公倍数新增24基础数论-A1-3 | 掌握用 gcd 求最小公倍数 lcm:lcm(a,b) = a×b / gcd(a,b),并注意先除后乘以防溢出。 | |
| 521 | 素数新增24基础数论-A1-4 | 掌握判断素数的试除法:只需检查到 √n 的素数/整数因子即可。 | |
| 522 | 质因数分解新增24基础数论-A1-5 | 掌握质因数分解:把 n 拆成素数因子的乘积,通过不断除以最小因子实现。 |
哈希
5 个标签 · 5 已就绪| 序号 | 知识点 | 能力目标 | 操作 |
|---|---|---|---|
| 603 | unordered_map新增28-A2-1 | 理解哈希函数的设计目标(均匀、稳定、快速)与常见方法:除留余数、乘法哈希、以及字符串/结构的组合哈希;介绍位扰动减少低位聚集。 | |
| 604 | unordered_set新增28-A2-2 | 掌握双哈希(用两个独立哈希函数降低冲突/碰撞)与布隆过滤器(多个哈希位构成的位数组,支持高效近似“可能存在/一定不存在”)。 | |
| 605 | 计数哈希新增28-A2-3 | 掌握 Rabin-Karp:对模式串与文本每个长度为 m 的窗口计算滚动哈希,哈希相等再逐字符确认,从而在平均 O(n) 完成多模式/子串匹配。 | |
| 606 | 去重新增28-A2-4 | 理解一致性哈希:把节点与键都哈希到同一个圆环上,键沿顺时针找最近节点;引入虚拟节点使负载均衡,常用于分布式缓存扩容。 | |
| 607 | 哈希映射新增28-A2-5 | 综合运用哈希:在查重、计数、缓存、字符串判等、集合判同等场景中正确选择哈希结构,并理解其时间/空间权衡与碰撞应对。 |
