算法模板库 · 竞赛大纲总览
-
学习卷课程大纲
J 34 课 + S 24 课 · 教学链顺序
查看
-
NOI 大纲 · 入门级
CSP-J · 难度系数 1~5
查看
-
NOI 大纲 · 提高级
CSP-S · 难度系数 5~8
查看
-
NOI 大纲 · NOI 级
NOI / CTS · 难度系数 7~10
查看
-
GESP C++ 一至八级
编程能力等级认证
查看
学习卷课程大纲(J 34 课 + S 24 课)
阶段一 · 语言基础(16 课)
| 课号 |
主题 |
覆盖词条 |
知识点 |
先修 |
状态 |
| J-L34 |
计算机与 NOI 基础常识 |
KJ-1~6/9/10/11/12 |
计算机基本构成、操作系统、网络与 Internet、计算机历史、NOI 历史与规则、图形界面文件操作、Windows/Linux IDE、g++ 基本使用 |
—(行序第一课) |
⬜ |
| J-L01 |
程序编译与运行 |
KJ-⅞/13d |
位、字节与字;程序设计语言与编译运行基本概念;编辑、编译、解释、调试 |
— |
✅ |
| J-L02 |
程序基本概念 |
KJ-13a/b/c/e |
标识符/关键字/常量/变量/表达式、头文件与名字空间、预处理与宏 |
L01 |
✅ |
| J-L03 |
基本数据类型 |
KJ-14a~e |
int/long long、float/double、char、bool、枚举 enum |
L02 |
⬜ |
| J-L04 |
输入输出与顺序 |
KJ-15a/18a |
cin/scanf/cout/printf、赋值与复合语句;顺序/分支/循环三大结构 |
L02 |
⬜ |
| J-L05 |
运算符与表达式 |
KJ-16a~e/17 |
算术/关系/逻辑运算、自增自减、三目运算;数学库函数 |
L03/L04 |
⬜ |
| J-L06 |
分支结构 |
KJ-15b/18c |
if、switch、多层条件语句;流程图 |
L05 |
⬜ |
| J-L07 |
循环结构 |
KJ-15c/d/18b |
for/while/do while、多层循环;模块化程序设计 |
L05/L06 |
⬜ |
| J-L08 |
位运算 |
KJ-16f |
位运算 & \| ~ ^ << >> |
L05 |
⬜ |
| J-L09 |
数组 |
KJ-19a~c |
数组与下标、数组读写、二维与多维数组 |
L03/L07 |
⬜ |
| J-L10 |
字符串 |
KJ-20a/b |
字符数组及相关函数、string 类及相关函数 |
L09 |
⬜ |
| J-L11 |
函数 |
KJ-21a~c |
函数定义与调用、形参实参、传值与传引用、作用范围 |
L05/L09 |
⬜ |
| J-L12 |
结构体与联合体 |
KJ-22a/b |
结构体、联合体 |
L09/L11 |
⬜ |
| J-L13 |
指针与引用 |
KJ-23a~e |
指针、指针访问数组、字符指针、结构体指针、引用 |
L09 |
⬜ |
| J-L14 |
文件读写 |
KJ-24a~c |
文件基本概念与文本读写、文本/二进制类型、文件重定向 |
L04/L10 |
⬜ |
| J-L15 |
STL 入门 |
KJ-25a/b |
min/max/swap/sort;stack、queue、list、vector 容器 |
L03/L09 |
⬜ |
阶段二 · 数据结构(4 课)
| 课号 |
主题 |
覆盖词条 |
知识点 |
先修 |
状态 |
| J-L16 |
链表 |
KJ-26a |
单链表、双向链表、循环链表 |
L15/L09 |
⬜ |
| J-L17 |
栈与队列 |
KJ-26b/c |
栈、队列 |
L16 |
⬜ |
| J-L18 |
二叉树 |
KJ-27a~i |
树的定义/表示/存储、二叉树定义性质/存储/前中后序遍历、完全二叉树及数组表示、哈夫曼树与编码、二叉搜索树 |
L16 |
⬜ |
| J-L19 |
图存储与表示 |
KJ-28a/b |
图的表示与存储:邻接矩阵、邻接表 |
L17/L09 |
⬜ |
阶段三 · 算法(11 课)
| 课号 |
主题 |
覆盖词条 |
知识点 |
先修 |
状态 |
| J-L20 |
算法概念与复杂度直觉 |
KJ-29 |
算法概念、自然语言/流程图/伪代码描述;复杂度分析(逐层计数、循环定级、调和级数/筛法级数)、10⁸ 估算 |
L07/L09 |
⬜ |
| J-L21 |
枚举与模拟 |
KJ-30 |
枚举法、模拟法 |
L20 |
⬜ |
| J-L24 |
递归与递推 |
KJ-31b/c/21d |
递推法、递归法、递归函数 |
L11/L09 |
⬜ |
| J-L23 |
排序 |
KJ-34a~e |
排序基本概念、冒泡/选择/插入/计数排序 |
L09/L15 |
⬜ |
| J-L22 |
查找与二分 |
KJ-31d/31e |
二分法、倍增法 |
L20/L23 |
⬜ |
| J-L25 |
贪心 |
KJ-31a |
贪心法 |
L20/L23 |
⬜ |
| J-L26 |
搜索 |
KJ-35 |
深度优先搜索 DFS、广度优先搜索 BFS |
L24/L17 |
⬜ |
| J-L27 |
图论遍历与泛洪 |
KJ-36a~c |
图的 DFS/BFS 遍历、泛洪算法 Flood Fill |
L19/L26 |
⬜ |
| J-L28 |
动态规划入门 |
KJ-37a~d |
DP 基本思路、简单一维 DP、背包型 DP、区间型 DP(基础版) |
L24/L25/L09 |
⬜ |
| J-L29 |
前缀和与差分 |
KJ-32a/b |
前缀和、差分 |
L09 |
⬜ |
| J-L30 |
高精度 |
KJ-33a~d |
高精度加/减/乘法、高精度整数除以单精度整数的商和余数 |
L10/L24 |
⬜ |
阶段四 · 数学(3 课)
| 课号 |
主题 |
覆盖词条 |
知识点 |
先修 |
状态 |
| J-L31 |
进制与编码 |
KJ-38/42 |
数及其运算、进制与进制转换、原码反码补码、格雷码、大小端字节序;ASCII、UTF/Unicode/Base64 |
L03/L05 |
⬜ |
| J-L32 |
初等数论 |
KJ-40 |
取整、模运算与取余、整数唯一分解定理、辗转相除法、素数筛(埃氏/线性) |
L07/L31 |
⬜ |
| J-L33 |
离散与组合数学 |
KJ-41/39 |
集合、加法/乘法原理、排列、组合、杨辉三角;初中代数与几何 |
L31/L32 |
⬜ |
S 侧 · 提高级(24 课)
| 课号 |
主题 |
覆盖词条 |
知识点 |
先修 |
状态 |
| S-L24 |
Linux 环境与编译调试 |
KS-43~47 |
Linux 终端文件与目录命令、文本编辑工具、g++ 常用编译选项、time 查看用时、GDB 调试 |
—(建议 S 第一课) |
⬜ |
| S-L01 |
类与对象 |
KS-48 |
类的概念与简单应用、成员函数与运算符重载、继承/多态/虚函数 |
J 语法基础 |
⬜ |
| S-L02 |
STL 全量 |
KS-49 |
容器与迭代器、pair/tuple、set/multiset、deque/priority_queue、map/multimap、bitset、常用算法函数 |
J-L15 |
⬜ |
| S-L03 |
线性结构进阶 |
KS-50 |
双端栈、双端队列、单调队列、优先队列、ST 表 |
J-L17 |
⬜ |
| S-L04 |
集合与森林·并查集 |
KS-51 |
并查集、树的孩子兄弟表示法 |
J-L24/L25 思想 |
⬜ |
| S-L05 |
特殊树 |
KS-52 |
二叉堆、树状数组、线段树、字典树 Trie、笛卡尔树、平衡树(AVL/Treap/Splay) |
S-L03 |
⬜ |
| S-L06 |
常见图 |
KS-53 |
偶图(二分图)、欧拉图、有向无环图、连通与强连通、双连通、握手定理与顶点度数 |
J-L19 |
⬜ |
| S-L07 |
哈希表 |
KS-54 |
数值哈希函数构造、字符串哈希函数构造、哈希冲突处理、随机数 rand |
J-L10 |
✅ |
| S-L08 |
复杂度分析 |
KS-55a/b |
时间复杂度分析、空间复杂度分析 |
J-L20 |
⬜ |
| S-L09 |
分治 |
KS-57a/58a/58b |
分治算法、归并排序、快速排序 |
J-L24 |
⬜ |
| S-L10 |
排序进阶 |
KS-58c/d/e |
堆排序、桶排序、基数排序 |
S-L09/S-L05 |
⬜ |
| S-L11 |
离散化与扫描线 |
KS-56a/d |
离散化、扫描线 |
S-L08/J-L23 |
⬜ |
| S-L12 |
贪心进阶 |
KS-61a 思想/哈夫曼 |
贪心思想进阶、哈夫曼树应用 |
J-L25/S-L05 |
⬜ |
| S-L13 |
搜索进阶 |
KS-55c/d/56b/c/60a |
记忆化搜索、启发式搜索、双向 BFS、迭代加深搜索、剪枝优化 |
J-L26/S-L08 |
⬜ |
| S-L14 |
最短路 |
KS-61b/c/d |
单源最短路(Bellman-Ford/Dijkstra/SPFA)、单源次短路、Floyd-Warshall |
J-L19/S-L08/S-L03 |
⬜ |
| S-L15 |
MST 与拓扑 |
KS-61a/e |
最小生成树(Prim/Kruskal)、DAG 拓扑排序 |
S-L04/S-L14 |
⬜ |
| S-L16 |
图论进阶 |
KS-61f/g/h/i |
欧拉道路与欧拉回路、二分图判定、强连通分量、割点与割边 |
S-L14/S-L15 |
⬜ |
| S-L17 |
树的高级算法 |
KS-61j/k/l |
树的重心/直径/DFS 序/欧拉序、树上差分/子树和/倍增、最近公共祖先 LCA |
S-L16/J-L22 |
⬜ |
| S-L18 |
动态规划进阶 |
KS-62a~f |
多维 DP、树形 DP、状态压缩 DP、DP 常用优化、LCS、LIS |
J-L28 |
⬜ |
| S-L19 |
字符串算法 |
KS-59a/b |
字符串匹配 KMP、Manacher 算法 |
J-L10/S-L07 |
✅ |
| S-L20 |
数论算法 |
KS-64a~i |
同余式、欧拉定理与欧拉函数、费马小定理、威尔逊定理、裴蜀定理、逆元、扩展欧几里得、中国剩余定理、快速幂 |
J-L32 |
⬜ |
| S-L21 |
初等数学 |
KS-63 |
高中代数、高中几何 |
J 数学基础 |
⬜ |
| S-L22 |
离散与组合进阶 |
KS-65 |
多重集合、等价关系与等价类、多重集排列/组合、错排列与圆排列、鸽巢原理、二项式定理、容斥原理、卡特兰数、最少硬币找零、命题逻辑 |
J-L33 |
⬜ |
| S-L23 |
线性代数 |
KS-66 |
向量与矩阵概念、向量运算、矩阵初等变换、矩阵运算、特殊矩阵、高斯消元 |
S-L22 |
⬜ |
NOI 大纲 2025 · 入门级(CSP-J)
难度系数:🟢 1~2 | 🟡 3 | 🟠 4~5
2.1.1 基础知识与编程环境(12 项,均 🟢 1)
| 知识点 |
难度 |
| 计算机的基本构成(CPU、内存、I/O 设备) |
🟢 1 |
| Windows、Linux 等操作系统的基本概念及常见操作 |
🟢 1 |
| 计算机网络和 Internet 的基本概念 |
🟢 1 |
| 计算机的历史和常见用途 |
🟢 1 |
| NOI 以及相关活动的历史 |
🟢 1 |
| NOI 以及相关活动的规则 |
🟢 1 |
| 位、字节与字 |
🟢 1 |
| 程序设计语言以及程序编译和运行的基本概念 |
🟢 1 |
| 图形界面新建、复制、删除、移动文件或目录 |
🟢 1 |
| Windows IDE(Dev-C++ 等) |
🟢 1 |
| Linux IDE(Code::Blocks 等) |
🟢 1 |
| g++ 编译命令的基本使用 |
🟢 1 |
2.1.2 C++ 程序设计
| 知识块 |
知识点 |
难度 |
| 程序基本概念 |
标识符、关键字、常量、变量、字符串、表达式;常量与变量的命名、定义及作用 |
🟢 1 |
| 程序基本概念 |
头文件与名字空间的概念 |
🟢 2 |
| 程序基本概念 |
编辑、编译、解释、调试的概念 |
🟢 2 |
| 基本数据类型 |
整数型 int、long long;实数型 float、double;字符型 char;布尔型 bool |
🟢 1 |
| 程序基本语句 |
cin/scanf/cout/printf、赋值语句、复合语句 |
🟢 2 |
| 程序基本语句 |
if、switch、多层条件语句 |
🟢 2 |
| 程序基本语句 |
for、while、do while 语句 |
🟢 2 |
| 程序基本语句 |
多层循环语句 |
🟡 3 |
| 基本运算 |
算术运算;关系运算;逻辑运算;自增自减;三目运算 |
🟢 1 |
| 基本运算 |
位运算:&、|、~、^、<<、>> |
🟢 2 |
| 数学库常用函数 |
绝对值、四舍五入、取整、平方根、三角、对数、指数函数 |
🟡 3 |
| 结构化程序设计 |
顺序结构、分支结构和循环结构 |
🟢 1 |
| 结构化程序设计 |
自顶向下逐步求精的模块化设计;流程图 |
🟢 2 |
| 数组 |
数组与下标、数组的读入与输出 |
🟢 1 |
| 数组 |
二维数组与多维数组 |
🟡 3 |
| 字符串的处理 |
字符数组与相关函数;string 类与相关函数 |
🟢 2 |
| 函数与递归 |
函数定义与调用、常量与变量的作用范围、递归函数 |
🟢 2 |
| 函数与递归 |
传值参数与传引用参数 |
🟡 3 |
| 结构体与联合体 |
结构体、联合体 |
🟡 3 |
| 指针与引用 |
指针、基于指针的数组访问、字符指针、指向结构体的指针 |
🟠 4 |
| 指针与引用 |
引用 |
🟠 5 |
| 文件及基本读写 |
文件基本概念与文本操作、文本/二进制类型、文件重定向与读写 |
🟢 2 |
| STL 模板 |
min、max、swap、sort |
🟡 3 |
| STL 模板 |
栈、队列、链表、向量等容器 |
🟠 4 |
2.1.3 数据结构
| 知识点 |
难度 |
| 链表:单链表、双向链表、循环链表 |
🟡 3 |
| 栈、队列 |
🟡 3 |
| 树的定义与相关概念 |
🟡 3 |
| 树的表示与存储 |
🟠 4 |
| 二叉树的定义与基本性质 |
🟡 3 |
| 二叉树的表示与存储 |
🟠 4 |
| 二叉树的遍历:前序、中序、后序 |
🟠 4 |
| 完全二叉树的定义与基本性质 |
🟠 4 |
| 完全二叉树的数组表示法 |
🟠 4 |
| 哈夫曼树的定义和构造、哈夫曼编码 |
🟠 4 |
| 二叉搜索树的定义和构造 |
🟠 4 |
| 图的定义与相关概念 |
🟡 3 |
| 图的表示与存储:邻接矩阵 |
🟠 4 |
| 图的表示与存储:邻接表 |
🟠 4 |
2.1.4 算法
| 知识点 |
难度 |
| 算法概念 |
🟢 1 |
| 算法描述:自然语言、流程图、伪代码 |
🟢 2 |
| 枚举法、模拟法 |
🟢 1 |
| 贪心法 |
🟡 3 |
| 递推法 |
🟡 3 |
| 递归法 |
🟠 4 |
| 二分法 |
🟠 4 |
| 倍增法 |
🟠 4 |
| 前缀和 |
🟡 3 |
| 差分 |
🟠 4 |
| 高精度的加法、减法、乘法 |
🟠 4 |
| 高精度整数除以单精度整数的商和余数 |
🟠 4 |
| 排序的基本概念、冒泡、选择、插入、计数排序 |
🟡 3 |
| 深度优先搜索 DFS |
🟠 5 |
| 广度优先搜索 BFS |
🟠 5 |
| 图的深度优先遍历 |
🟠 4 |
| 图的广度优先遍历 |
🟠 4 |
| 泛洪算法 Flood Fill |
🟠 5 |
| 动态规划的基本思路 |
🟠 4 |
| 简单一维动态规划 |
🟠 4 |
| 简单背包类型动态规划 |
🟠 5 |
| 简单区间类型动态规划 |
🟠 5 |
2.1.5 数学与其他
| 知识点 |
难度 |
| 自然数、整数、有理数、实数及其算术运算 |
🟢 1 |
| 进制与进制转换:二、八、十、十六进制 |
🟢 1 |
| 代数(初中部分)、几何(初中部分) |
🟢 1 |
| 整除、因数、倍数、指数、质(素)数、合数 |
🟡 3 |
| 取整 |
🟡 3 |
| 模运算与取余 |
🟡 3 |
| 整数唯一分解定理 |
🟡 3 |
| 辗转相除法(欧几里得算法) |
🟡 3 |
| 素数筛法:埃氏筛法与线性筛法 |
🟠 4 |
| 集合 |
🟢 2 |
| 加法原理、乘法原理 |
🟢 2 |
| 排列、组合、杨辉三角 |
🟠 4 |
| ASCII 码 |
🟢 2 |
NOI 大纲 2025 · 提高级(CSP-S)
提高级自动包含入门级全部知识点;新增条目如下。
2.2.1 基础知识与编程环境(5 项,均 🟠 5)
| 知识点 |
难度 |
| Linux 系统终端中常用的文件与目录操作命令 |
🟠 5 |
| Linux 系统下常见文本编辑工具的使用 |
🟠 5 |
| 常用编译命令 g++ 与相关编译选项 |
🟠 5 |
| 终端运行程序、time 命令查看程序用时 |
🟠 5 |
| 调试工具 GDB 的使用 |
🟠 5 |
2.2.2 C++ 程序设计
| 知识块 |
知识点 |
难度 |
| 类(class) |
类的概念及简单应用;成员函数和运算符重载 |
🔴 6 |
| STL 模板 |
容器(container)和迭代器(iterator);对 pair、元组 tuple |
🟠 5 |
| STL 模板 |
集合 set、多重集合 multiset;双端队列 deque、优先队列 priority_queue;映射 map、多重映射 multimap;位集合 bitset |
🟠 5 |
| STL 模板 |
算法模板库中的常用函数 |
🟠 5 |
2.2.3 数据结构
| 知识块 |
知识点 |
难度 |
| 线性结构 |
双端栈、双端队列、单调队列 |
🟠 5 |
| 线性结构 |
优先队列、ST 表(Sparse Table) |
🔴 6 |
| 集合与森林 |
并查集;树的孩子兄弟表示法 |
🔴 6 |
| 特殊树 |
二叉堆;树状数组;线段树;字典树 Trie |
🔴 6 |
| 特殊树 |
笛卡尔树 |
🟣 7 |
| 特殊树 |
平衡树:AVL、Treap、Splay 等 |
🟣 8 |
| 常见图 |
稀疏图 |
🟠 5 |
| 常见图 |
偶图(二分图)、欧拉图、有向无环图 |
🔴 6 |
| 常见图 |
连通图与强连通图、双连通图 |
🟣 7 |
| 哈希表 |
数值哈希函数构造 |
🟠 5 |
| 哈希表 |
字符串哈希函数构造;哈希冲突的常用处理方法 |
🔴 6 |
2.2.4 算法
| 知识块 |
知识点 |
难度 |
| 复杂度分析 |
时间复杂度分析;空间复杂度分析 |
🔴 6 |
| 算法策略 |
离散化 |
🔴 6 |
| 算法策略 |
扫描线 |
🟣 7 |
| 基础算法 |
分治算法 |
🔴 6 |
| 排序算法 |
归并排序、快速排序、桶排序 |
🟠 5 |
| 排序算法 |
堆排序、基数排序 |
🔴 6 |
| 字符串算法 |
字符串匹配:KMP 算法 |
🔴 6 |
| 字符串算法 |
Manacher 算法 |
🟣 7 |
| 搜索算法 |
搜索的剪枝优化;记忆化搜索 |
🔴 6 |
| 搜索算法 |
启发式搜索;双向广度优先搜索;迭代加深搜索 |
🟣 7 |
| 图论算法 |
最小生成树:Prim 和 Kruskal 等 |
🔴 6 |
| 图论算法 |
单源最短路:Bellman-Ford、Dijkstra、SPFA 等 |
🔴 6 |
| 图论算法 |
单源次短路 |
🟣 7 |
| 图论算法 |
Floyd-Warshall 算法 |
🔴 6 |
| 图论算法 |
有向无环图的拓扑排序;欧拉道路和欧拉回路;二分图的判定 |
🔴 6 |
| 图论算法 |
强连通分量;割点、割边 |
🟣 7 |
| 图论算法 |
树的重心、直径、DFS 序与欧拉序;树上差分、子树和与倍增;最近公共祖先 LCA |
🔴 6 |
| 动态规划 |
多维动态规划;树型动态规划 |
🔴 6 |
| 动态规划 |
状态压缩动态规划 |
🟣 7 |
| 动态规划 |
动态规划的常用优化 |
🟣 8 |
2.2.5 数学与其他
| 知识块 |
知识点 |
难度 |
| 初等数学 |
代数(高中部分) |
🟠 5 |
| 初等数学 |
几何(高中部分) |
🔴 6 |
| 初等数论 |
同余式 |
🟠 5 |
| 初等数论 |
欧拉定理和欧拉函数;费马小定理;威尔逊定理;裴蜀定理;模运算意义下的逆元;扩展欧几里得算法;中国剩余定理 |
🟣 7 |
| 离散与组合数学 |
多重集合;等价关系与等价类;多重集上的排列与组合;错排列、圆排列;鸽巢原理;二项式定理 |
🔴 6 |
| 离散与组合数学 |
容斥原理;卡特兰(Catalan)数 |
🟣 7 |
| 线性代数 |
向量与矩阵的概念 |
🟠 5 |
| 线性代数 |
向量的运算;矩阵的初等变换;矩阵的运算;特殊矩阵的概念 |
🔴 6 |
| 线性代数 |
高斯消元法 |
🟣 7 |
NOI 大纲 2025 · NOI 级(概述)
难度系数 7~10(🟣 7~8 | ⚫ 9~10,其中【10】仅用于 CTS 集训队选拔)。
| 知识块 |
知识点(难度系数) |
| C++ 程序设计 |
面向对象的程序设计思想 OOP【8】 |
| 数据结构 · 线性结构 |
块状链表【8】 |
| 数据结构 · 复杂树 |
树链剖分【8】、动态树 LCT【10】、树套树【9】、k-d 树【9】、虚树【8】 |
| 数据结构 · 可合并堆 |
左偏树【8】、二项堆【10】 |
| 数据结构 · 可持久化 |
可持久化线段树【8】、其他可持久化数据结构【9】 |
| 算法 · 策略 |
分块【8】、离线处理思想【8】、复杂分治思想【9】、平衡规划思想【9】、构造思想【9】 |
| 算法 · 字符串 |
扩展 KMP【8】、有穷自动机的概念【8】、AC 自动机【8】、后缀数组【8】、后缀树【9】、后缀自动机【10】 |
| 算法 · 图论 |
基环树【8】、最小树形图【10】、2-SAT【8】、网络流【8】、支配集/独立集/覆盖集【10】、匈牙利算法【8】、KM 算法【10】、一般图的匹配【10】 |
| 算法 · 动态规划 |
复杂动态规划模型的构建【9】、复杂动态规划模型的优化【9】 |
| 数学 · 初等数论 |
原根和指数【8】、BSGS 算法【8】、狄利克雷卷积【9】、二次剩余【10】、二次同余式【10】 |
| 数学 · 离散与组合 |
群及其基本性质【9】、置换群与循环群【9】、母函数【9】、莫比乌斯反演【9】、Burnside 引理与 Pólya 定理【9】、斯特林数【9】、无根树的 Prüfer 序列【9】 |
| 数学 · 线性代数 |
逆矩阵【9】、行列式【9】、向量空间与线性相关【9】、基与线性基【9】 |
| 数学 · 高等数学 |
多项式函数的微分【8】、积分【8】、泰勒级数【10】、快速傅里叶变换【10】 |
| 数学 · 概率论 |
概率的基本概念【8】、期望与方差【9】、条件概率【9】、贝叶斯公式【9】 |
| 数学 · 博弈论 |
尼姆(Nim)博弈【9】、SG 函数【9】 |
| 数学 · 最优化 |
单纯形法【10】 |
| 数学 · 计算几何 |
点线面位置关系判定【8】、一般图形面积计算【8】、二维凸包【8】、半平面交【9】 |
| 数学 · 信息论与其他 |
熵与互信息等【10】;信息/描述/通讯复杂度的概念【10】 |
GESP C++ 编程能力等级认证(一至八级)
| 级别 |
核心知识内容(C++) |
对应本站课程 |
| 一级 |
计算机基础与编程环境、计算机历史、变量、基本数据类型、控制语句结构(顺序/循环/选择)、基本运算、输入输出语句 |
J-L01~L07 |
| 二级 |
计算机的存储与网络、程序设计语言特点、流程图、ASCII 编码、类型转换、多层分支/循环、常用数学函数 |
J-L03~L07、J-L31 |
| 三级 |
数据编码(原码/反码/补码)、进制转换、位运算、算法的概念与描述、一维数组、字符串及其函数、枚举法、模拟法 |
J-L08~L10、J-L21、J-L31 |
| 四级 |
函数、形参与实参/作用域、指针、结构体、二维与多维数组、递推算法、排序(冒泡/插入/选择)与稳定性、复杂度估算、文件重定向与读写、异常处理 |
J-L09、J-L11~L14、J-L20、J-L23、J-L24 |
| 五级 |
初等数论、数组模拟高精度四则运算、单/双/循环链表、二分查找与二分答案、递归、贪心算法、分治(归并/快排)、复杂度估算(多项式/对数) |
J-L16、J-L22、J-L24、J-L25、J-L30、J-L32 |
| 六级 |
树的定义/构造/遍历、哈夫曼树与编码、完全二叉树、二叉排序树、格雷编码、DFS/BFS、简单动态规划(一维 DP、简单背包)、面向对象与类、栈/队列/循环队列 |
J-L17~L19、J-L26、J-L28、S-L01、J-L31 |
| 七级 |
数学库常用函数(三角/对数/指数)、复杂动态规划(二维 DP、区间 DP、LIS、LCS、滚动数组优化)、图的定义及遍历、泛洪算法、哈希表 |
J-L27、J-L28、J-L29、S-L07、S-L19 |
| 八级 |
计数原理、排列与组合、杨辉三角、倍增法、代数与平面几何(初中)、图论算法综合应用(最小生成树、单源最短路)、复杂算法效率分析、算法优化 |
J-L22、J-L25、J-L31~L33、S-L14、S-L15 |