这是一条适配零基础学习者的长期路线:每个阶段 8 节核心课,建议每节录制为 45--60 分钟,并穿插同主题练习和复盘。它遵循“语法工具 -> 程序组织 -> 算法建模 -> CSP-J 专项 -> 赛场整合”的递进关系;学习速度可以调整,但不跳过前置检验。
每个课件统一采用以下视频结构:
- 情境引入(约 5 分钟):说明本课要解决的真实编程问题。
- 概念与演示(约 15 分钟):从最小可运行程序建立规则。
- 拆题与编码(约 15 分钟):把题意、算法和 C++ 代码逐步连接。
- 练习与排错(约 10 分钟):故意暴露边界、格式或复杂度错误。
- 检验与复盘(约 5 分钟):用清单确认是否真正掌握。
“必会”指 CSP-J 路线的核心;“拓展”只能作为能力边界说明,不能代替前置课的练习。
目标:从“会跟着敲代码”进步到“能独立写出、运行并修正一个小程序”。
| 课件 | 学习目标 | 具体内容 | 检验清单 |
|---|---|---|---|
| S1-01 第一行程序与编译 | 理解源文件、编译和运行;能输出多行文字 | .cpp、main、cout、编译报错的第一种读法 |
能新建并运行;能解释编译与运行;能修改输出 |
| S1-02 变量与数据类型 | 用变量记录题目中的量;区分整数、实数和字符 | int、long long、double、char、赋值 |
能选择类型;能更新变量;能解释类型错配 |
| S1-03 表达式与运算顺序 | 把公式翻译成 C++ 表达式 | 四则运算、整除、取模、优先级、括号 | 能写周长/平均数;能判断整除;会主动加括号 |
| S1-04 输入输出与格式 | 正确读取数据并按题目格式输出 | cin、cout、空格、换行、固定小数 |
能读多个变量;能输出指定格式;能排查多余提示语 |
| S1-05 条件判断 | 根据条件选择不同分支 | 比较、逻辑运算、if/else if/else |
能写三路判断;能覆盖边界值;不混淆 = 与 == |
| S1-06 重复执行与循环 | 用循环解决重复计算 | for、while、循环变量、累加与计数 |
能求连续和;能控制循环次数;能避免死循环 |
| S1-07 嵌套循环与规律输出 | 看懂二维重复过程 | 嵌套循环、行列含义、简单图案、break/continue |
能输出矩阵式图案;能说明内外层职责;能停在正确位置 |
| S1-08 调试与书写习惯 | 形成可检查的程序工作流 | 缩进、命名、分段输出、编译错误/运行错误/答案错误 | 能定位一处语法错;能构造小数据;能复述三类错误 |
目标:能使用合适的数据结构和函数,把较长程序组织得清楚、可测试。
| 课件 | 学习目标 | 具体内容 | 检验清单 |
|---|---|---|---|
| S2-01 数组与下标 | 存储一组同类数据并安全遍历 | 一维数组、下标、长度、初始化 | 能读写数组;不越界;能求最大最小值 |
| S2-02 字符、字符串与编码 | 正确处理姓名、单词和字符序列 | char、string、长度、访问、ASCII 基础 |
能逐字符遍历;能统计字符;能区分字符与字符串 |
| S2-03 函数与分解 | 把重复或独立逻辑拆成函数 | 返回值、参数、声明、调用 | 能提取一个函数;能传入参数;能解释返回值 |
| S2-04 作用域与参数 | 避免变量互相干扰 | 局部变量、全局变量、值传递、引用的认识 | 能说明变量可见范围;能避免同名混乱;能判断何时需要修改原变量 |
| S2-05 结构体与题目建模 | 用自定义记录表示一条完整信息 | struct、成员访问、记录数组 |
能定义学生/比赛记录;能读写成员;能按字段比较 |
| S2-06 排序与比较规则 | 让数据按题意排列 | 冒泡思想、sort、比较规则、稳定性概念 |
能排序整数;能写简单比较;能验证相同元素处理 |
| S2-07 枚举与模拟 | 把过程逐步翻译成程序 | 枚举范围、状态更新、按题意模拟 | 能写有限枚举;能画状态变化;能避免漏分支 |
| S2-08 复杂度与测试点 | 用规模判断程序是否可行 | 操作次数估算、O(n)/O(n^2) 直觉、边界数据 |
能比较两种写法;能选范围;能设计最小/最大测试 |
目标:在已有 C++ 工具上,形成选择算法、证明直觉和构造测试的能力。
| 课件 | 学习目标 | 具体内容 | 检验清单 |
|---|---|---|---|
| S3-01 数学与数位处理 | 用取模和整除处理数字结构 | %、/、位数、最大公约数、循环不变量 |
能拆分各位;能求 GCD;能解释循环何时结束 |
| S3-02 递归与分治直觉 | 用“更小的同类问题”设计过程 | 递归边界、递归调用、栈的直觉、阶乘/输出 | 能写清终止条件;能追踪 3 层调用;不把递归当魔法 |
| S3-03 二分查找 | 在有序条件下快速定位答案 | 单调性、左右边界、中点、死循环风险 | 能判断能否二分;能维护区间;能测试首尾答案 |
| S3-04 前缀和与区间查询 | 让多次区间求和变快 | 前缀和定义、下标偏移、区间公式 | 能写前缀和;能查询任一区间;能处理从第一个元素开始 |
| S3-05 双指针与滑动窗口 | 用两个位置维护连续区间 | 左右指针、窗口条件、移动时机 | 能解释两个指针含义;能保持窗口条件;能验证空/满窗口 |
| S3-06 贪心选择 | 在局部选择中建立正确性直觉 | 选择标准、反例、排序后决策 | 能说出贪心规则;能找反例;能用小规模验证 |
| S3-07 栈、队列与过程顺序 | 选择后进先出或先进先出结构 | stack、queue、括号匹配、BFS 直觉 |
能选对容器;能完成括号匹配;能说出入队出队顺序 |
| S3-08 动态规划初步 | 用已解决的小问题推到大问题 | 状态、转移、初始化、一维 DP | 能写出状态含义;能处理初值;能手算前三步 |
目标:把知识点串成赛题工作流,在正确性、复杂度和实现细节之间稳定切换。
| 课件 | 学习目标 | 具体内容 | 检验清单 |
|---|---|---|---|
| S4-01 CSP-J 题面与程序规范 | 按竞赛要求提交干净程序 | 输入输出、文件/标准输入输出意识、数据范围、无提示语 | 能圈出范围;能删除调试输出;能按样例独立运行 |
| S4-02 读题与建模卡 | 把自然语言题面拆成变量、状态和目标 | 已知/未知、样例反推、约束、算法候选 | 能填一张建模卡;能复述目标;能写出两个边界 |
| S4-03 模拟题专项 | 正确还原多步骤规则 | 状态表、事件顺序、条件分支、样例追踪 | 能画状态表;能处理每一步;能用自造样例检验 |
| S4-04 搜索与剪枝 | 在可控范围内探索选择 | DFS、搜索树、回溯、剪枝条件 | 能写搜索边界;能解释回溯;能判断剪枝不漏解 |
| S4-05 排序、查找与映射 | 用排序结果支持后续决策 | 排序后扫描、二分复用、计数数组、简单映射 | 能从范围选工具;能处理重复;能验证排序后逻辑 |
| S4-06 DP 经典模型 | 识别可分阶段决策的问题 | 线性 DP、选或不选、最优子结构、状态压缩认识 | 能列状态表;能写转移;能检查不可达状态 |
| S4-07 图与遍历基础 | 用点和边表达关系或地图 | 邻接表直觉、DFS/BFS、访问标记、连通块 | 能建小图;能防止重复访问;能说出 DFS/BFS 差异 |
| S4-08 子任务与得分策略 | 在限制时间内争取稳定分数 | 子任务、部分分、先易后难、复杂度降级 | 能划分可做部分;能写保底方案;能安排检查时间 |
目标:达到 CSP-J 提高所需的稳定参赛状态,能在限时环境中实现、验证和复盘。
| 课件 | 学习目标 | 具体内容 | 检验清单 |
|---|---|---|---|
| S5-01 限时解题流程 | 形成固定的读题到提交顺序 | 审题计时、建模草稿、编码、样例、提交前检查 | 能在限时内写流程卡;能预留检查时间;不跳过样例 |
| S5-02 系统化调试 | 按证据而非猜测修错 | 最小复现、分段输出、断言思路、差分检查 | 能缩小错误范围;能构造反例;能记录修复原因 |
| S5-03 C++ 常见陷阱复盘 | 规避语言层面的失分点 | 溢出、初始化、数组越界、运算优先级、输入格式 | 能识别五类陷阱;能选 long long;能检查数组范围 |
| S5-04 80 分策略 | 在难题中保留可验证的部分 | 暴力基线、子任务、特殊情况、复杂度升级 | 能先写可过小数据的程序;能标注限制;能避免伪优化 |
| S5-05 模拟赛一:实现与自测 | 在完整题组中练执行力 | 限时模拟、提交顺序、自测表、时间记录 | 能完成一次模拟;能保存测试数据;能记录未完成原因 |
| S5-06 模拟赛复盘:错误分类 | 从错误中抽取下一次规则 | 读题错、算法错、实现错、边界错、时间错 | 能分类每个失分;能给每类写一个改法;能重做关键题 |
| S5-07 模拟赛二:稳定性 | 用修正后的流程验证进步 | 新题组、独立解题、交叉检查、复盘对比 | 能独立完成;能与上次比较;能说明一个稳定习惯 |
| S5-08 CSP-J 总复习与后续边界 | 整理参赛清单并明确下一阶段 | 知识地图、赛前清单、资料整理、CSP-S 衔接条件 | 能完成个人清单;能解释薄弱项;能区分 CSP-J 与后续拓展 |
- 每节只讲一个关键认知变化;录制时不要在同一课同时塞入多个新算法。
- 代码演示至少包含一个正常样例、一个边界样例和一个容易犯错的反例。
- 讲完后让学习者先回答检验清单,再展示参考实现或拓展做法。
- 任何新增课件先确定它属于哪个阶段、依赖哪一课、服务哪个 CSP-J 能力,再写视频讲稿。