基础概念
C++基础语法与编程环境
搭建G++/IDE与命令行环境,全面掌握变量、常量、基本类型、输入输出与运算符,为教师重构基础语法讲解体系奠基
建议预留 60 分钟
学习目标
- 搭建开发环境并掌握编译运行流程
- 掌握变量、常量、基本类型、运算符的语义与易错点
- 理解输入输出流的底层缓冲机制
关键概念
- 变量与数据类型
- 输入输出流
- 运算符与优先级
- 编译链接流程
为什么学习
- 语法基础是教师讲解的起点,需达到能系统讲清每个概念定义与设计动机的水平,但复杂度低于高阶结构
如何检验理解
- 能向学生完整讲解变量作用域、类型、输入输出的最小教学模块
- 能在Linux/G++环境下编译并运行示例程序并解释报错
基础概念
分支与循环控制结构
掌握if/switch/for/while等流程控制、嵌套与边界处理,作为实现一切算法代码的基本支架
建议预留 50 分钟
学习目标
- 掌握分支结构与短路求值
- 掌握循环结构与break/continue语义
- 掌握循环边界与常见错误
关键概念
- if/switch
- for/while
- 短路求值
- 嵌套与边界
为什么学习
- 流程控制是几乎所有算法代码的骨架,教师需熟练运用并理解边界与死循环等常见错误以指导纠错
如何检验理解
- 能手写并讲解三分支以上的循环嵌套例题
- 能指出学生代码中的边界与死循环错误
补充知识
教学工具链与评测环境
掌握Dev-C++/VS Code、Linux命令行、编译选项与对拍脚本,作为教学演示与评测的基础工具能力
建议预留 60 分钟
学习目标
- 掌握主流IDE与命令行编译
- 理解-O2/-Wall等编译选项作用
- 掌握对拍与性能分析工具
关键概念
- 编译选项
- Linux命令行
- 对拍脚本
- 调试器
为什么学习
- 工具链是教学与测验的基础支撑,需熟练使用但不必深究编译器底层,故作为工具类补充能力
如何检验理解
- 能独立配置VS Code/G++教学环境并解决编译报错
- 能编写对拍脚本验证学生程序
基础概念
数组与多维数组
掌握一维/二维数组的存储布局、下标访问与多维遍历,为字符数组与后续容器和数据结构奠基
建议预留 50 分钟
学习目标
- 掌握数组的内存连续存储原理
- 掌握多维数组遍历与初始化
- 理解越界访问的危害与防护
关键概念
- 数组存储布局
- 下标与偏移
- 越界访问
- 多维数组
为什么学习
- 数组是内存连续存储的第一个载体,教师需讲清其内存布局与下标语义,为字符数组和图的存储打基础
如何检验理解
- 能解释数组名退化为指针指针的本质
- 能演示二维数组按行存储并讲解越界风险
核心技能
信息学竞赛体系认知
全面了解CSP-J/CSP-S/NOIP/NOI赛制、晋级路径、题型分布与评测规则,形成教学分层全局观
建议预留 45 分钟
学习目标
- 掌握四大赛事赛制与时长题型
- 理解评测机制与编译内存限制
- 建立教学分层框架
关键概念
- CSP-J/S
- NOIP
- NOI
- 晋级路径
- 评测机制
为什么学习
- 竞赛体系是教师制定分层教学路线的依据,需熟练掌握赛制与评测规则为带班打基础
如何检验理解
- 能向学生讲清CSP-J到NOI的晋级流程与报名要求
- 能根据数据范围判断题目难度层级
核心技能
字符数组与C字符串函数
深入理解字符数组内存布局、'\0'终止符、strlen/strcpy/strcmp等C字符串函数内部实现与常见错误,是学习者重建的起点
建议预留 70 分钟
学习目标
- 理解字符数组内存布局与终止符机制
- 掌握C字符串函数语义与底层实现
- 识别缓冲区溢出等安全隐患
关键概念
- 字符数组
- \0终止符
- strcpy/strcmp/strlen
- 缓冲区溢出
为什么学习
- 学习者的明确起点与重点弱点,需达到能讲清内存布局与函数内部实现并能设计教学题的水平
如何检验理解
- 能徒手实现strlen/strcpy/strcmp并讲解边界处理
- 能指出缓冲区溢出与未初始化终止符的经典错误
- 能设计字符处理的课堂例题并讲清内存过程
核心技能
函数与参数传递
掌握函数声明/定义、值/引用/指针传参、作用域与命名空间,为递归与模块化编程奠基
建议预留 55 分钟
学习目标
- 掌握函数定义与重载
- 理解值/引用/指针传参的内存差异
- 掌握作用域与命名空间
关键概念
- 函数签名
- 传参方式
- 作用域
- 栈帧
为什么学习
- 函数是封装与递归的基础,教师需讲清三种传参方式在内存层面的差异
如何检验理解
- 能讲解值传递与引用/指针传递在内存上的区别
- 能实现并讲解函数栈帧与作用域规则
核心技能
递归思想与递归函数
掌握递归三要素、调用栈、终止条件与经典递归问题,是分治、搜索与DP的思想源头
建议预留 60 分钟
学习目标
- 掌握递归三要素与终止条件
- 理解调用栈与栈溢出机制
- 掌握阶乘/汉诺塔/斐波那契等经典递归
关键概念
- 递归三要素
- 调用栈
- 回溯
- 递归转迭代
为什么学习
- 递归是所有搜索/分治/DP的共同思想基础,教师需能生动讲解调用栈运行过程并引导学生理解终止条件
如何检验理解
- 能画图讲解递归栈的入栈出栈过程
- 能设计递归转迭代的演示题
- 能诊断学生递归导致的栈溢出与无限递归
核心技能
指针与地址空间
透彻理解指针本质、地址与指针运算、指针与数组/字符串关系,是学习者重点重建的薄弱环节
建议预留 75 分钟
学习目标
- 理解地址空间与指针本质
- 掌握指针运算与指针/数组关系
- 掌握指针作参数与多级指针
- 分析野指针与悬垂指针
关键概念
- 地址与指针
- 解引用
- 指针运算
- 野指针与悬垂指针
为什么学习
- 指针是学习者明确的重建弱点,作为教师需能透彻讲解地址空间与指针运算,并能带领学生排查野指针等错误
如何检验理解
- 能画内存布局图讲解指针与数组、字符串的等价关系
- 能讲解指针运算与多级指针的典型错误
- 能设计指针教学调试题并引导学生定位问题
核心技能
复杂度分析与系统优化
掌握大O记号、时间/空间复杂度、均摊分析与规模估算,建立贯穿全程的优化意识
建议预留 55 分钟
学习目标
- 掌握大O记号与复杂度计算
- 据数据规模判断算法可行性
- 掌握常见复杂度的数据范围对应
关键概念
- 大O记号
- 时间/空间复杂度
- 均摊分析
- 数据规模估算
为什么学习
- 复杂度分析是算法教学与题目建模的核心能力,教师需能据数据规模估算所需复杂度上限
如何检验理解
- 能据数据范围n估算所需复杂度上限
- 能分析循环嵌套与递归的复杂度
- 能讲解均摊分析与空间优化
核心技能
动态内存与内存管理
掌握new/delete、堆与栈区别、动态数组与内存泄漏排查,建立安全的内存管理习惯
建议预留 65 分钟
学习目标
- 掌握堆与栈内存模型
- 掌握new/delete与动态数组
- 掌握内存泄漏排查与越界调试
关键概念
- 堆与栈
- new/delete
- 内存泄漏
- 指针生命周期
为什么学习
- 内存管理是学习者薄弱且教学必讲内容,需掌握堆栈模型与泄漏调试能力以带学生排查问题
如何检验理解
- 能解释堆与栈内存的生命周期差异
- 能用工具定位内存泄漏与越界
- 能讲解new/delete配对及智能指针的意义
核心技能
引用、const与类型系统
掌握引用本质、const修饰、类型转换与右值引用概念,理解C++类型安全机制
建议预留 55 分钟
学习目标
- 掌握引用与指针的区别
- 理解const修饰符的多重含义
- 掌握C++风格类型转换与值类别
关键概念
- 引用
- const
- 类型转换
- 值类别
为什么学习
- 引用与const贯穿C++代码,教师需讲清与指针的异同及类型系统规则
如何检验理解
- 能对比讲解指针与引用的本质区别
- 能讲解const在不同位置的含义与类型转换安全性
核心技能
string类与C++字符串处理
掌握C++ string类底层实现、常用成员函数、与C风格字符串转换,构建完整字符串能力
建议预留 60 分钟
学习目标
- 掌握string类内部实现原理
- 掌握常用成员函数与迭代器使用
- 掌握与C字符串/字符数组互转
关键概念
- string底层
- 成员函数
- 容量与扩容
- 字符串转换
为什么学习
- 字符串算法与string类教学均依赖此基础,作为教师需掌握底层实现与常见误区以衔接字符串算法
如何检验理解
- 能讲解string类内部内存管理与增删改查复杂度
- 能对比string与C字符串的使用场景并讲解互转
核心技能
STL总览与迭代器
了解STL六大组件框架与迭代器分类/失效规则,建立容器统一定制使用模型
建议预留 50 分钟
学习目标
- 掌握STL架构与六大组件
- 理解迭代器分类与失效规则
- 掌握auto与范围for的编译语义
关键概念
- 容器/算法/迭代器
- 迭代器失效
- auto与范围for
- 六大组件
为什么学习
- STL是学习者重点弱点,教师需从组件模型讲清容器、算法、迭代器协作机制
如何检验理解
- 能讲解STL六大组件及协作关系
- 能解释迭代器失效的典型场景
核心技能
排序算法
掌握快速排序、归并排序、计数/桶排序的实现、复杂度与稳定性,理解排序算法思想
建议预留 65 分钟
学习目标
- 掌握快排、归并的思想与实现
- 理解稳定性与复杂度差异
- 掌握计数/桶排序适用场景
关键概念
- 快速排序
- 归并排序
- 计数排序
- 稳定性
为什么学习
- 排序是复杂度分析与分治的典型应用,教师需能徒手实现并讲清各排序适用场景与稳定性
如何检验理解
- 能手写快排/归并并讲清复杂度
- 能解释稳定性与原地排序含义
- 能利用归并排序求逆序对
核心技能
位运算与二进制技巧
掌握位与/或/异或/移位、lowbit、二进制枚举,为状态压缩与高效数值运算奠基
建议预留 55 分钟
学习目标
- 掌握基本位运算与优先级
- 掌握lowbit与popcount技巧
- 掌握二进制状态表示
关键概念
- 按位运算
- lowbit
- 二进制枚举
- 状态掩码
为什么学习
- 位运算是状态压缩与底层优化的基础,教师需能熟练运用并讲解二进制建模与位技巧
如何检验理解
- 能讲解lowbit与快速位统计技巧
- 能用位运算实现二进制枚举
- 能分析位运算复杂度优势
核心技能
贪心算法
掌握贪心策略设计、正确性证明(交换论证/反证)与典型应用场景
建议预留 60 分钟
学习目标
- 掌握贪心策略设计
- 掌握正确性证明方法
- 识别贪心失效的情形
关键概念
- 贪心策略
- 交换论证
- 反证法
- 最优子结构
为什么学习
- 贪心证明是教师讲解的难点,需掌握交换论证与反证方法并能为学生展示失效反例
如何检验理解
- 能证明区间调度/类背包贪心正确性
- 能设计贪心反例说明失效场景
- 能讲清贪心与动态规划的边界
核心技能
分治思想与主定理
掌握分治三步骤、递归复杂度分析(主定理)与归并/快速选择等典型分治问题
建议预留 55 分钟
学习目标
- 掌握分治的分解-解决-合并框架
- 掌握主定理与递归复杂度
- 掌握逆序对/最近点对等分治应用
关键概念
- 分治法
- 递归树
- 主定理
- 合并步骤
为什么学习
- 分治是递归与复杂度分析的结合,教师需能讲清分治递归树与主定理的推导
如何检验理解
- 能分析分治递归树并用主定理估复杂度
- 能讲解快速选择/归并排序的分治思想
核心技能
基础数论
掌握质数判定与筛法、GCD/LCM(欧几里得)、快速幂,奠定竞赛数学基础
建议预留 65 分钟
学习目标
- 掌握质数筛法
- 掌握GCD与欧几里得算法
- 掌握快速幂取模
关键概念
- 质数筛法
- 欧几里得算法
- 快速幂
- 模运算
为什么学习
- 数论是竞赛高频方向,教师需掌握筛法与GCD原理并能讲解推导过程
如何检验理解
- 能实现埃氏/欧拉筛并讲清复杂度
- 能推导欧几里得算法并证明
- 能实现快速幂取模
核心技能
STL顺序容器
掌握vector/deque/list/stack/queue/priority_queue的接口、内存策略与应用场景
建议预留 60 分钟
学习目标
- 掌握vector底层与扩容机制
- 掌握stack/queue/queue的语义
- 能据复杂度选择合适的顺序容器
关键概念
- vector扩容
- stack/queue
- priority_queue
- 双端队列
为什么学习
- 顺序容器是算法实现主力工具,教师需讲清各容器内存与复杂度差异以便据场景选型
如何检验理解
- 能讲解vector扩容机制与迭代器失效
- 能据场景选择合适容器并讲清复杂度
- 能比较stack/queue/priority_queue语义
核心技能
STL关联容器
掌握map/set/multimap/unordered容器的底层(红黑树/哈希)与接口,理解有序与哈希选择
建议预留 60 分钟
学习目标
- 掌握map/set接口与底层结构
- 理解有序与哈希容器差异
- 掌握自定义比较器与结构体键
关键概念
- 红黑树
- 哈希表
- 有序容器
- pair与比较器
为什么学习
- 关联容器广泛用于建模,需要理解map/set查找修改复杂度及哈希原理并据情形选型
如何检验理解
- 能讲解红黑树与哈希表的时间复杂度差异
- 能讲清map与unordered_map场景选择
- 能实现自定义排序的set并讲解比较器
核心技能
枚举与暴力求解
掌握循环枚举、组合枚举、可行性剪枝的暴力策略,作为搜索与找规律基础
建议预留 50 分钟
学习目标
- 掌握循环/组合枚举
- 掌握可行性剪枝降复杂度
- 用暴力对拍验证算法正确性
关键概念
- 循环枚举
- 组合枚举
- 可行性剪枝
- 对拍验证
为什么学习
- 暴力枚举是初学者须掌握的兜底策略与找规律手段,教师需能引导学生有序且不重不漏地枚举
如何检验理解
- 能设计不重不漏的枚举方案并估算规模
- 能用暴力枚举对拍验证正确解
核心技能
二分查找与二分答案
掌握二分框架、单调性判定、最大化最小值/最小化最大值等二分答案模型
建议预留 60 分钟
学习目标
- 掌握二分查找与边界处理
- 掌握二分答案建模
- 掌握浮点二分精度处理
关键概念
- 二分框架
- 单调性
- 二分答案
- 精度
为什么学习
- 二分答案把最优化转化为判定是竞赛核心技巧,教师需讲清单调性分析与边界处理
如何检验理解
- 能实现正确边界处理的二分查找
- 能将最大最小值问题转化为二分判定
- 能分析二分复杂度与浮点精度
核心技能
组合数学基础
掌握排列组合、二项式定理、容斥原理,连接计数与概率领域
建议预留 55 分钟
学习目标
- 掌握排列/组合计算
- 掌握二项式定理与杨辉三角
- 掌握容斥原理
关键概念
- 排列组合
- 二项式定理
- 容斥原理
- 计数DP结合
为什么学习
- 组合计数是竞赛数学与DP的交叉,教师需掌握常用公式并能推导与结合模运算
如何检验理解
- 能推导排列组合公式与杨辉三角
- 能运用容斥原理解计数问题
- 能结合模运算处理大组合数
核心技能
动态规划入门
掌握DP状态设计、转移方程推导、记忆化搜索与线性DP/LIS/LCS模型,是竞赛核心里程碑
建议预留 80 分钟
学习目标
- 掌握状态与转移方程设计
- 掌握记忆化搜索转迭代
- 掌握LIS/LCS线性DP模型
关键概念
- 最优子结构
- 重叠子问题
- 状态转移
- LIS/LCS
为什么学习
- DP是竞赛核心且教师必须讲解思路,需达到能引导学生从暴力抽象到状态与转移的水平
如何检验理解
- 能讲清DP的重叠子问题与最优子结构
- 能复现从暴力到DP优化的推导过程
- 能设计LIS/LCS教学训练题
核心技能
字符串算法
掌握字符串哈希、KMP匹配、字典树(Trie),基于字符数组基础进阶强化
建议预留 65 分钟
学习目标
- 掌握字符串哈希碰撞处理
- 掌握KMP失配与next数组
- 掌握Trie的插入与查询
关键概念
- 字符串哈希
- KMP
- Trie树
- 前缀函数
为什么学习
- 基于字符数组基础进阶的字符串算法,教师需讲清KMP的next数组构造与哈希碰撞原理
如何检验理解
- 能手写KMP并讲清next数组构造
- 能实现Trie与字符串哈希判重
- 能讲清三个算法的时间复杂度
补充知识
计算几何基础
掌握向量叉积、点线关系、凸包与基础几何判定
建议预留 55 分钟
学习目标
- 掌握向量叉积基础
- 掌握凸包算法
- 掌握几何判定问题
关键概念
- 叉积
- 凸包
- 向量运算
- 极角排序
为什么学习
- 计算几何属NOI补充内容,教师了解基本概念以覆盖完整教学,但非核心主线故降级处理
如何检验理解
- 能实现叉积判断点与线段关系
- 能实现凸包扫描算法
核心技能
STL算法库与函数对象
掌握sort/binary_search/next_permutation等algorithm算法与lambda/仿函数,提升解题与教学编码效率
建议预留 55 分钟
学习目标
- 掌握sort、二分、排列等常用算法
- 掌握lambda表达式与仿函数
- 理解算法函数与容器迭代器配合
关键概念
- sort实现
- lambda
- next_permutation
- 迭代器范围
为什么学习
- algorithm库是竞赛高频工具,教师需掌握各算法复杂度、稳定性与lambda用法
如何检验理解
- 能讲解sort的混合排序复杂度与稳定性
- 能用lambda/仿函数实现自定义排序
- 能讲解next_permutation实现原理
核心技能
线性数据结构:栈与队列进阶
掌握栈/队列底层实现、单调栈/单调队列、括号匹配与表达式求值等应用
建议预留 60 分钟
学习目标
- 掌握栈队列底层实现
- 掌握单调栈/队列思想
- 掌握表达式求值
关键概念
- 单调栈
- 单调队列
- 循环队列
- 表达式求值
为什么学习
- 单调栈/队是竞赛常用优化技巧,教师需掌握原理并能讲解典型应用与复杂度
如何检验理解
- 能手写底层栈/队列与循环队列
- 能用单调栈/队列解决经典优化题
- 能讲解括号匹配与表达式求值
核心技能
DFS深度优先搜索
掌握DFS遍历、回溯与递归搜索树,为全排列、连通块与图搜索奠定基础
建议预留 65 分钟
学习目标
- 掌握DFS递归框架
- 掌握回溯状态恢复
- 掌握经典DFS搜索应用
关键概念
- DFS框架
- 回溯
- 搜索树
- 状态恢复
为什么学习
- DFS是图/树搜索核心,教师需能引导学生构造搜索树并理解回溯与状态恢复
如何检验理解
- 能手写DFS全排列/子集回溯
- 能用DFS找连通块与路径
- 能画搜索树讲解回溯与剪枝空间
核心技能
树与二叉树基础
掌握树的存储、前中后序/层序遍历、二叉树性质、二叉堆,为高级树结构奠基
建议预留 65 分钟
学习目标
- 掌握树的多种存储方式
- 掌握二叉树遍历与重构
- 掌握二叉堆与优先队列
关键概念
- 树存储
- 二叉树遍历
- 二叉堆
- 前中序重构
为什么学习
- 树是许多数据结构与DP的基础,教师需掌握多种存储方式与遍历,并衔接二叉堆与线段树
如何检验理解
- 能用数组、指针、孩子表示等多种方式建树
- 能实现三序遍历与层序BFS
- 能实现二叉堆并用priority_queue对照
核心技能
并查集
掌握并查集的find/union、路径压缩与按秩合并,维护动态连通分量
建议预留 50 分钟
学习目标
- 掌握find/union实现
- 掌握路径压缩与按秩合并
- 理解复杂度与典型应用
关键概念
- 路径压缩
- 按秩合并
- 连通分量
- 摊还复杂度
为什么学习
- 并查集是图论与连通性基础,教师需掌握对近似常数摊还复杂度的讲解
如何检验理解
- 能实现路径压缩加按秩合并的并查集
- 能讲解其摊还复杂度
- 能解决连通性与成员关系题
核心技能
背包问题
掌握0-1/完全/多重/分组背包的状态转移与滚动数组空间优化
建议预留 65 分钟
学习目标
- 掌握0-1背包与滚动数组
- 掌握完全/多重背包
- 掌握分组与混合背包
关键概念
- 0-1背包
- 完全背包
- 多重背包
- 滚动数组
为什么学习
- 背包是DP经典模型,教师需掌握各变种转移方式与滚动数组优化
如何检验理解
- 能实现0-1/完全背包及滚动优化
- 能区分各背包遍历顺序差异
- 能讲解多重背包的二进制拆分
核心技能
状态压缩DP
掌握用位掩码表示状态、DP压缩转移与TSP等经典状压模型
建议预留 70 分钟
学习目标
- 掌握状态位掩码编码
- 掌握状压DP转移与初始化
- 掌握经典状压模型
关键概念
- 位掩码
- 子集枚举
- TSP
- 状态转移
为什么学习
- 状压DP是CSP-S提高考点,教师需能讲解位掩码状态设计与转移的实现思路
如何检验理解
- 能用位掩码表示子集状态
- 能实现TSP状压DP并讲清转移
- 能分析状压DP复杂度
核心技能
数论进阶
掌握扩展欧几里得、模逆元、中国剩余定理与进阶数论技巧
建议预留 65 分钟
学习目标
- 掌握扩展欧几里得
- 掌握模逆元求法
- 掌握中国剩余定理
关键概念
- 扩展欧几里得
- 模逆元
- 中国剩余定理
- 同余
为什么学习
- 进阶数论是CSP-S/NOIP高频,教师需掌握逆元与CRT原理并能推导
如何检验理解
- 能推导并实现模逆元求法
- 能实现中国剩余定理合并同余方程组
- 能讲解相关复杂度
补充知识
博弈论入门
掌握Nim游戏、SG函数与公平组合游戏基础
建议预留 55 分钟
学习目标
- 掌握Nim游戏与异或理论
- 掌握SG函数概念
- 掌握基础博弈转化
关键概念
- Nim游戏
- SG函数
- 必胜/必败态
- 异或和
为什么学习
- 博弈属NOIP提高内容,教师了解基础以应对补充教学,非核心主线故降级
如何检验理解
- 能解释Nim游戏异或和必胜策略
- 能计算简单SG函数
补充知识
概率与期望DP
掌握概率DP状态设计、期望线性性与随机化算法基础
建议预留 60 分钟
学习目标
- 掌握概率DP递推
- 掌握期望线性性质
- 掌握典型期望模型
关键概念
- 概率DP
- 期望线性性
- 全概率公式
- 随机化
为什么学习
- 概率期望DP是提高进阶内容,教师需理解模型以覆盖教学,非主线故降级
如何检验理解
- 能设计概率DP状态转移
- 能用期望线性性简化问题
核心技能
课堂教学与知识解构方法
掌握概念-原理-动机-实现-内存-错误-对比-练习的结构化教学法与分层带班策略
建议预留 70 分钟
学习目标
- 掌握结构化知识解构法
- 掌握分层教学与带班策略
- 掌握例题与错题设计
关键概念
- 结构化教学
- 分层教学
- 教学设计
- 学情评估
为什么学习
- 教学解构能力是教师角色核心要求,需能将复杂知识拆解为学生可理解的结构化课程
如何检验理解
- 能为任一算法设计概念-原理-实现-错误的结构化教案
- 能据学生水平分层布置训练
- 能设计由浅入深的例题序列
核心技能
BFS广度优先搜索
掌握队列实现BFS、无权最短路与状态图搜索
建议预留 60 分钟
学习目标
- 掌握BFS队列框架
- 掌握无权图最短路求解
- 掌握状态图搜索建模
关键概念
- BFS队列
- 层次遍历
- 状态图
- 最短步数
为什么学习
- BFS与DFS共同构成搜索基础,教师需讲清队列层次遍历与无权最短路的性质
如何检验理解
- 能实现BFS求无权图最短路
- 能用状态图建模搜索题
- 能对比DFS/BFS遍历顺序差异
核心技能
区间DP与树形DP
掌握区间划分DP、树上状态转移、树的直径与重心
建议预留 65 分钟
学习目标
- 掌握区间DP框架
- 掌握树形DP转移
- 掌握树直径与重心
关键概念
- 区间DP
- 树形DP
- 树的直径
- 状态设计
为什么学习
- 区间与树形DP是DP进阶核心,教师需掌握状态划分与树上转移思路
如何检验理解
- 能实现区间合并DP与记忆化
- 能实现树上最大独立集DP
- 能求树的直径与重心
核心技能
线段树与树状数组
掌握线段树区间维护、懒标记、树状数组与离散化
建议预留 80 分钟
学习目标
- 掌握线段树建/改/查
- 掌握懒标记与离散化
- 掌握树状数组应用
关键概念
- 线段树
- 懒标记
- 树状数组
- 离散化
为什么学习
- 线段树是区间问题高阶工具,教师需掌握懒标记与递归/非递归实现并能讲解
如何检验理解
- 能手写线段树支持区间改/查
- 能实现懒标记下传与离散化
- 能用树状数组解决逆序对
核心技能
搜索剪枝与优化
掌握可行性/最优性剪枝、迭代加深、双向搜索与优化技巧
建议预留 65 分钟
学习目标
- 掌握各类剪枝技巧
- 掌握迭代加深与双向搜索
- 掌握最优性剪枝
关键概念
- 可行性剪枝
- 最优性剪枝
- 迭代加深
- 双向搜索
为什么学习
- 剪枝是搜索提速关键,教师需掌握多种优化手段并能讲清其复杂度影响
如何检验理解
- 能设计可行性/最优性剪枝策略
- 能实现双向BFS与迭代加深
- 能分析搜索状态空间与剪枝效果
核心技能
图的基本概念与存储
掌握图定义、邻接矩阵/邻接表/链式前向星存储与遍历
建议预留 55 分钟
学习目标
- 掌握图的基本术语
- 掌握邻接表与前向星实现
- 掌握DFS/BFS遍历
关键概念
- 邻接表
- 链式前向星
- 有向/无向图
- 连通性
为什么学习
- 图存储是图算法前提,教师需掌握多种存储方式及空间复杂度差异
如何检验理解
- 能用邻接表与前向星存储并遍历图
- 能分析各存储空间与遍历复杂度
- 能讲清有向/无向图与连通性
核心技能
LCA与树上倍增
掌握最近公共祖先、树上倍增与树上差分求解
建议预留 60 分钟
学习目标
- 掌握倍增求LCA
- 掌握树上差分技巧
- 掌握LCA在路径问题应用
关键概念
- 最近公共祖先
- 树上倍增
- 树上差分
- 欧拉序
为什么学习
- LCA是树上路径问题核心工具,教师需掌握倍增原理与实现并能讲解依赖
如何检验理解
- 能实现倍增求LCA
- 能解决树上路径与差分问题
- 能分析倍增时间复杂度
核心技能
最短路算法
掌握Dijkstra/Floyd/Bellman-Ford/SPFA及负权与堆优化处理
建议预留 70 分钟
学习目标
- 掌握Dijkstra及其堆优化
- 掌握Floyd与多源最短路
- 掌握Bellman-Ford/SPFA负权处理
关键概念
- Dijkstra
- Floyd
- Bellman-Ford
- 负权环
为什么学习
- 最短路是图论核心算法,教师需掌握各算法适用场景与堆优化实现
如何检验理解
- 能实现堆优化Dijkstra并分析复杂度
- 能实现Floyd与负权算法
- 能据边权与规模选择合适算法
核心技能
最小生成树
掌握Kruskal与Prim算法、贪心证明与并查集应用
建议预留 60 分钟
学习目标
- 掌握Kruskal并查集实现
- 掌握Prim与堆优化
- 理解MST正确性
关键概念
- Kruskal
- Prim
- 切分性质
- 松弛边
为什么学习
- 最小生成树结合贪心/并查集,教师需掌握两算法实现与切分性质证明
如何检验理解
- 能实现Kruskal与Prim并对比
- 能证明MST贪心性质
- 能解决扩展MST问题
核心技能
拓扑排序与DAG
掌握拓扑序求法、DAG性质与关键路径概念
建议预留 55 分钟
学习目标
- 掌握拓扑排序算法
- 掌握DAG性质
- 掌握关键路径概念
关键概念
- 拓扑序
- DAG
- 入度
- 环检测
为什么学习
- 拓扑排序是DAG与依赖问题基础,教师需掌握实现与环检测
如何检验理解
- 能实现Kahn/DFS拓扑排序
- 能判定有环并找出环
- 能解决依赖顺序问题
核心技能
信息学竞赛实战策略
掌握读题审题、对拍测试、暴力得分策略、时间分配与赛制适应
建议预留 60 分钟
学习目标
- 掌握读题建模与审题流程
- 掌握暴力得分与对拍策略
- 掌握模拟赛组织与成绩分析
关键概念
- 读题建模
- 对拍测试
- 时间分配
- 暴力保分
为什么学习
- 实战策略是带班参赛核心,教师需掌握全场时间/分段得分/对拍组织方法
如何检验理解
- 能制定读-想-写-对拍的时间分配方案
- 能教学生暴力保分与正解兼顾策略
- 能组织模拟赛并做成绩分析
补充知识
网络流与最大流
掌握最大流Dinic/ISAP、费用流与二分图匹配进阶
建议预留 70 分钟
学习目标
- 掌握最大流Dinic
- 掌握费用流概念
- 掌握二分图匹配建模
关键概念
- 最大流
- Dinic
- 费用流
- 二分图匹配
为什么学习
- 网络流属NOI级别进阶,教师了解最高阶段以覆盖完整教学,非核心主线故降级
如何检验理解
- 能实现Dinic最大流
- 能理解费用流与二分图匹配建模
核心技能
题目分析与命题能力
掌握题干抽象建模、数据规模暗示分析、多解区分度设计与原创改编题能力
建议预留 70 分钟
学习目标
- 掌握题目建模流程
- 掌握数据规模与复杂度对应分析
- 掌握命题区分度设计
关键概念
- 题目建模
- 复杂度判别
- 命题区分度
- 改编题
为什么学习
- 命题与分析是教师角色核心能力,综合运用算法与复杂度以支持分层命题与带班
如何检验理解
- 能抽象题面为算法/数据结构模型
- 能据数据范围判断期望复杂度
- 能设计含多种解法的分层命题
前置关系与知识联系
- 数组与多维数组 → 字符数组与C字符串函数
- 递归思想与递归函数 → 树与二叉树基础
- 图的基本概念与存储 → 拓扑排序与DAG
- string类与C++字符串处理 → 字符串算法
- 最短路算法 → 网络流与最大流
- 数组与多维数组 → 排序算法
- STL顺序容器 → 线性数据结构:栈与队列进阶
- 组合数学基础 → 博弈论入门
- 排序算法 → 枚举与暴力求解
- 指针与地址空间 → string类与C++字符串处理
- 动态规划入门 → 概率与期望DP
- 搜索剪枝与优化 → 信息学竞赛实战策略
- 复杂度分析与系统优化 → 贪心算法
- 分支与循环控制结构 → 位运算与二进制技巧
- 函数与参数传递 → 指针与地址空间
- STL顺序容器 → STL算法库与函数对象
- 图的基本概念与存储 → 网络流与最大流
- 分支与循环控制结构 → 复杂度分析与系统优化
- 复杂度分析与系统优化 → 位运算与二进制技巧
- 线段树与树状数组 → 信息学竞赛实战策略
- 动态规划入门 → 状态压缩DP
- 分治思想与主定理 → 动态规划入门
- 区间DP与树形DP → LCA与树上倍增
- 动态规划入门 → 区间DP与树形DP
- 分支与循环控制结构 → 基础数论
- 字符数组与C字符串函数 → string类与C++字符串处理
- 枚举与暴力求解 → DFS深度优先搜索
- 排序算法 → 二分查找与二分答案
- 图的基本概念与存储 → 最短路算法
- 基础数论 → 数论进阶
- 基础数论 → 组合数学基础
- 复杂度分析与系统优化 → 基础数论
- C++基础语法与编程环境 → 教学工具链与评测环境
- 指针与地址空间 → 引用、const与类型系统
- 位运算与二进制技巧 → 计算几何基础
- C++基础语法与编程环境 → 分支与循环控制结构
- 指针与地址空间 → STL总览与迭代器
- STL总览与迭代器 → STL顺序容器
- 基础数论 → 字符串算法
- 线段树与树状数组 → 题目分析与命题能力
- 枚举与暴力求解 → 背包问题
- BFS广度优先搜索 → 搜索剪枝与优化
- 函数与参数传递 → 复杂度分析与系统优化
- 数组与多维数组 → STL总览与迭代器
- 复杂度分析与系统优化 → 分治思想与主定理
- 位运算与二进制技巧 → 状态压缩DP
- 递归思想与递归函数 → 分治思想与主定理
- 图的基本概念与存储 → 最小生成树
- STL总览与迭代器 → STL关联容器
- 二分查找与二分答案 → 信息学竞赛实战策略
- 树与二叉树基础 → LCA与树上倍增
- 复杂度分析与系统优化 → 线性数据结构:栈与队列进阶
- 动态内存与内存管理 → 课堂教学与知识解构方法
- 递归思想与递归函数 → 动态规划入门
- 动态规划入门 → 题目分析与命题能力
- 复杂度分析与系统优化 → 排序算法
- 分支与循环控制结构 → 枚举与暴力求解
- 递归思想与递归函数 → DFS深度优先搜索
- 复杂度分析与系统优化 → 二分查找与二分答案
- 数组与多维数组 → 指针与地址空间
- 二分查找与二分答案 → 数论进阶
- 信息学竞赛实战策略 → 题目分析与命题能力
- 动态规划入门 → 背包问题
- 递归思想与递归函数 → STL算法库与函数对象
- 二分查找与二分答案 → 最短路算法
- 指针与地址空间 → 动态内存与内存管理
- 树与二叉树基础 → 区间DP与树形DP
- STL顺序容器 → BFS广度优先搜索
- 并查集 → 信息学竞赛实战策略
- BFS广度优先搜索 → 图的基本概念与存储
- STL顺序容器 → 并查集
- 排序算法 → 最小生成树
- 函数与参数传递 → 递归思想与递归函数
- 数组与多维数组 → 计算几何基础
- 数组与多维数组 → 函数与参数传递
- 分支与循环控制结构 → 数组与多维数组
- 数组与多维数组 → 图的基本概念与存储
- DFS深度优先搜索 → 搜索剪枝与优化
- DFS深度优先搜索 → BFS广度优先搜索
- 背包问题 → 线段树与树状数组
- 分支与循环控制结构 → 信息学竞赛体系认知
- string类与C++字符串处理 → 课堂教学与知识解构方法
- 递归思想与递归函数 → 并查集
- 树与二叉树基础 → 线段树与树状数组
- STL关联容器 → 课堂教学与知识解构方法
- STL顺序容器 → 树与二叉树基础
结合互动地图查看具体关系类型,再选择下一步。