更新于 2026-10-17 · 配合 课程对照表 与 ACM 校队选拔训练计划 使用
主线,一节课一个主题 + 一组配套题。这本阶段结束后,蓝桥杯省一的算法面基本铺完。
| 课号 | 主题 | 核心内容 | 配套题 |
|---|---|---|---|
| 0410 | 并查集 | 路径压缩 + 按秩合并;判连通、判环、分组 | P3367 · P1551 · P3958 |
| 0411 | 最短路 I:Dijkstra | 贪心 + 堆优化;非负权单源最短路 | P4779 · P3371 |
| 0412 | 最短路 II | Floyd(多源)/ Bellman-Ford / SPFA;负环检测 | P3385 |
| 0413 | 最小生成树 | Kruskal(并查集)+ Prim(堆),和 0410/0411 直接联动 | P3366 |
| 0414 | 二分查找与二分答案 | 单调性 + check 函数;"最大化最小值"套路 | P2249 · P1182 · P2678 |
| 0415 | 前缀和 · 差分 · 单调栈 | 区间求和、区间加、下一个更大元素 | P8218 · P2367 · P5788 |
| 0416 | 哈希表 | unordered_map/set;字符串哈希;去重与计数 | P3370 · P1102 |
| 0417 | 字符串匹配:KMP | next 数组、失配跳转;也是 AC 自动机的前置 | P3375 |
| 0418 | 贪心专题 | 交换论证;排序 + 贪心的常见模型 | P4995 · P1223 |
| 0419 | DP I:线性 DP | 状态定义、转移、边界;LIS / LCS / 数字三角形 | P1216 · P1020 |
| 0420 | DP II:背包 | 01 / 完全 / 多重背包;一维滚动数组的方向问题 | P1048 · P1049 · P1616 |
| 0421 | DP III:区间与树形 DP | 区间合并、树上最大独立集 | P1880 · P1352 |
| 0422 | 阶段项目 | 把 0401-0421 串成一个能跑的小程序 | — |
④ 全部走完后进入。这一层是 ACM 校队选拔和"算法岗面试"的分水岭。
| 课号 | 主题 | 核心内容 | 配套题 |
|---|---|---|---|
| 0501 | 树状数组 BIT | 单点修改 + 区间查询,O(log n) | P3374 · P3368 |
| 0502 | 线段树 I | 建树、区间查询、单点修改 | P3372 |
| 0503 | 线段树 II | lazy 标记、区间修改 | P3373 |
| 0504 | ST 表 / RMQ | 静态区间最值,O(1) 查询 | P3865 |
| 0505 | Trie 字典树 | 前缀树;字符串集合的快速查询 | P8306 |
| 0506 | AC 自动机 | Trie + fail 指针(要用到 0417 的 KMP 思想) | P3808 |
| 0507 | 数论 I | gcd / exgcd / 线性筛 / 快速幂 | P3383 · P1226 |
| 0508 | 数论 II | 同余、逆元、中国剩余定理(了解层面) | — |
| 0509 | DP 优化 | 单调队列优化、前缀和优化 | — |
| 0510 | 图论进阶 | 二分图最大匹配、网络最大流入门 | P3386 · P3376 |
| 0511 | 计算几何入门 | 向量运算、叉积判断、凸包 | — |
| 0512 | 阶段项目 | 综合 | — |
不占主线课时。每周 1-2 次、每次 30 分钟,做到哪个勾哪个。
| # | 子主题 | 最小可交付 | 状态 |
|---|---|---|---|
| 1 | Git 基础 | 把 D:\c++\LiangXi_LuoGu 变成仓库,每道题一个 commit | 待开始 |
| 2 | 分支与远程 | branch / merge / push,仓库推到 GitHub + 写 README | 待开始 |
| 3 | GitHub 协作 | 会开 Issue、提 PR、看懂别人仓库结构 | 待开始 |
| 4 | Linux 命令行 | cd/ls/cp/mv/rm/cat/grep/chmod,纯命令行找文件看代码 | 待开始 |
| 5 | WSL2 + Ubuntu | 装好 WSL2,在 Ubuntu 里编译通过现有 C++ 程序 | 待开始 |
| 6 | VS Code 远程开发 | VS Code 连 WSL,调试配置在 Linux 下跑通 | 待开始 |
| 7 | SSH / 服务器 | ssh 登录、scp 传文件、nano 改文件 | 开学后用学校服务器练 |
D:\c++\LiangXi_LuoGu 里 git init,把现有题目全部 git add . && git commit 一次。| 学期 | 课程 | 状态 | 备注 |
|---|---|---|---|
| 大一上 2026 秋 | ① 程序设计基础 | 主体已学完 | 0001-0015,开学后当复习 |
| ② 离散数学 | 穿插学习 | 每 3 课数据结构插 1 课,从命题逻辑开始 | |
| 大一下 2027 春 | ③ 面向对象程序设计 | 主体已学完 | 0301-0304,开学后当复习 |
| ⑥ 数字电路基础 | 待学 | 理论为主,重点搞懂逻辑门、真值表、卡诺图 | |
| 大二上 | ④ 数据结构与算法 | 进行中 | 0411 起继续;校内开课时正好复习 |
| ⑦ 电路与模拟电子技术基础 | 待学 | 依赖实验室,重点放在理论理解 | |
| 大二下 | ⑧ 计算机组成原理 | 待学 | 和 ⑥⑦ 串成"硬件三件套" |
| ⑨ 数据库系统原理 | 待学 | 写 SQL + 理解索引、事务 | |
| 大三上 | ⑩ 操作系统 | 待学 | 进程/内存/文件;和 ⑧ 强相关 |
| 大三 | ⑪ 计算机网络 | 待学 | TCP/IP、HTTP;和 ⑩ 一起看最有效 |
| ⑫ 软件工程 | 待学 | 实践性强,依赖团队项目 | |
| 大三下 | ⑬ 编译原理 | 待学 | 数据结构 + 离散数学的直接应用 |
不开专门课,等数据结构题目里自然遇到时顺手补。
| 特性 | 什么时候会遇到 | 状态 |
|---|---|---|
| Lambda 表达式 | 写自定义比较器时(sort 的第三个参数) | 已见过 |
unordered_map / set | 0416 哈希表那节课 | 0416 一起学 |
| 智能指针 | 用 new 写树 / 图觉得"删不干净"的时候 | 待学 |
std::move / 移动语义 | 看到"拷贝很贵"的讨论时 | 待学 |
nullptr | 现在就可以直接换掉 NULL | 随手改 |
任务书在 D:\c++\算法组千行任务\27算法组千行任务.pdf(8 页,7 篇)。和主线不抢时间:C++ 篇现在就能做,OpenCV / ROS2 / Navigation2 那几篇等 ④ 数据结构过半再开。
| 篇 | 内容 | 最小可交付 | 状态 |
|---|---|---|---|
| 1. Git 篇 | 建仓 / 连远程 / 上传 / clone / 分支 | 建仓库,分支名用自己名字拼音 | 部分会了 |
| 2. C++ 篇 | 打印 / 数据类型 / 循环 / 类与继承 / vector;斐波那契小游戏 | 1.1-1.6 各一个 .cpp | 待整理 |
| 2. C++ 考核任务 | 补全 Robot / Building 类,让给定的 main.cpp 跑通并"符合现实比赛的情况" | 代码已跑通、已审阅(见下) | 待补提交材料 |
| 3. 编程范式篇 | OOP 19 集、分层设计、SOLID、serial_driver 解耦 | 看懂 RMSerialDriver::receiveData | 待学 |
| 4. Ubuntu 篇 | WSL2 / 双系统 Ubuntu 22.04 | 和阶段⑥ 第 5 项合并做 | 待装 |
| 5-7. OpenCV / ROS2 / Navigation2 | 图像与轮廓、装甲板识别、pub/sub 节点、导航 | — | ④ 过半后再开 |
g++ 16.2.0 编译 exit=0,200 颗种子跑完没有崩溃、没有不终止(红胜 98 / 蓝胜 102),23 项单元测试全过。main.cpp:57 选攻击方、main.cpp:66 选目标,都不看 Survive(),所以阵亡的机器人照样开火 —— 实测 60 局里 60 局都是"双方 6 个机器人全灭之后"才分出胜负,残局完全由死人拆家打出来。Robot.cpp 的 Hit 里加两行守卫(不动框架代码,代价是比赛被拉长),或者在 main.cpp 里改成只在存活者中选人。D:\Git\cmd\git.exe)、Cmakelists.txt 是 0 字节空文件(本机没装 cmake)、main.cpp:61 一个未使用变量警告。
四个版本的实测对照(同一批 60 颗种子,种子用 argv 传入,各版本面对同一串随机数):
| 版本 | 均值轮数 | 中位 | 最大 | 红胜 / 蓝胜 |
|---|---|---|---|---|
| 原版(阵亡者也开火、目标可能是尸体) | 2737 | 2800 | 3300 | 28 / 32 |
| 只有活人开火(目标仍可能是尸体) | 6550 | 2800 | 15700 | 33 / 27 |
| 活人开火 + 目标只选活人 | 2077 | 1200 | 8100 | 33 / 27 |
只在 Robot.cpp 加两行守卫 | 11375 | 3200 | 45300 | 32 / 28 |
上表数据来自 2026-10-16 的对照实验。当时的验证脚本与推荐版文件放在 D:\codex-slills\_wqx\,已按用户要求连同其余验证目录(_w0410 / _w0411 / _w2c / _wcppc / _wdp / _wfix)一起删除 —— 数据保留在本页与下方待办表里,只是不再留文件。
平时跟看的频道:「蓝不过海呀」(UID 401399175,粉丝 24.9 万、投稿 88、合集 2 个,简介"动画讲解计算机知识")。动画讲解类,只用来建直觉 —— 它能让你看见 dis 怎么一层层扩散,但替代不了一遍手推和一遍自己敲。
下表按标题和时长整理(内容没有逐集核对,讲法以实际观看为准):
| 视频 | 时长 | 对应课 | 状态 |
|---|---|---|---|
| 图(Graph) 定义、术语、性质 | 21:51 | 0411 的前置(有向/无向、度、路径) | 现在可看 |
| 图的遍历 - 深度优先搜索 DFS | 21:43 | 0405–0409 的搜索与遍历 | 已学过 |
| 拓扑排序 | 30:59(充电专属) | 0409 拓扑排序与连通性 | 已学过 |
| 最短路径 - Dijkstra | 35:46 | 0411 最短路 I(当前卡点就在这) | 卡点在这 |
| 最短路径 - Floyd | 29:34(充电专属) | 0412 最短路 II(配 P3385) | 现在可看 |
| 最小生成树 - Kruskal | 18:18(充电专属) | 0413 最小生成树(配 P3366) | 0413 再看 |
| 最小生成树 - Prim | 24:22 | 0413 最小生成树(和 Dijkstra 结构像) | 0413 再看 |
| 树的存储结构 | 12:01 | 树的表示(孩子/双亲/孩子兄弟) | 已学过 |
| 树和森林与二叉树的转换 | 19:24 | 树与森林的遍历 | 已学过 |
| 线性表三连(顺序表 / 单链表 / 双链表与循环链表) | 14–21 分 | 阶段一、二的表结构 | 已学过 |
| 双向冒泡排序 | 12:25 | 排序那部分 | 已学过 |
if (d != dis[u]) continue; 为什么必要。注:space.bilibili.com 页面和 UID 接口(api.bilibili.com/x/web-interface/card,返回 -352)都带验证码,Agent 抓不到内容;想让 Agent 看某个频道/视频,直接发截图最省事。
| 比赛 | 时间 | 说明 | 状态 |
|---|---|---|---|
| 广工月赛(牛客同步赛,华为杯) | 2026-10-18 13:30-18:30 | div3+div4、面向零基础 26 级新生;contest/142131。目标:过 3-5 题 | 第 1 场 |
| Codeforces div4 / div3 | 每周留意场次 | 赛后必须看题解与别人的高分提交;rating 是入队时唯一可查的硬指标 | 每周 1 场 |
| 校 ACM 程序设计竞赛(校内赛) | 等通知(往年一学年一次) | 最直接的入队凭证,留意学院群与教务处通知 | 等通知 |
| 蓝桥杯省赛 | 2027-04 | 大一以试水为主,目标省二 | 2027 春 |
ACM 提前入队线启动:④ 推进到 0417 左右(每周 2-3 课)+ 每周一场限时比赛与赛后补题;工具链完成第 1-2 项(Git 仓库 + GitHub,正好当"持续投入的证据")。离散数学与千行任务支线暂缓。
④ 收尾(到 0422),准备进入 ⑤。目标是"看到一道中等题,能判断出该用哪个数据结构"。
蓝桥杯省赛(大一)。按 ACM 训练计划推进的话,此时 ④ 已完成、⑤ 走过半,目标是省二以上;同一学期留意浙江省"图森未来杯"与团队程序设计天梯赛的报名通知。
⑤ 过半。这时带着蓝桥杯 / 省赛成绩 + 可查的 CF 或牛客 rating去谈入队 —— 提前入队的意义就是把"大一下 / 大二上正式选拔"这一步提前半年到一年。
⑤ 收尾 + ⑧ 组成原理 + ⑨ 数据库。开始有人问你"方向"了,但不用急 —— 先把 ⑩⑪ 这两门"所有岗位必考"的课学起来。
⑩ 操作系统 + ⑪ 网络 + ⑫ 软工 + ⑬ 编译原理。这时候再按兴趣选方向(后端 / 嵌入 / 算法 / 图形)。
| 事项 | 说明 | 状态 |
|---|---|---|
| P5076 普通二叉树 | 已提交;caxun 已补 return,重复值仍会被丢弃那一处判据还在(不影响 AC) | 已提交 |
| P1160 队列安排 | 已提交(数组模拟版) | 已提交 |
| 0408 三题 | P5318 / P1605 / P1443 已提交(本地与参考解对拍通过) | 已提交 |
| 0410 并查集 | P3367 / P1551 / P3958 已提交;两处小瑕疵仍在:P1551 按大小合并比的是根下标、P3958 三项平方和理论可溢出 | 已提交 |
| 0411 最短路 I:Dijkstra | P4779 / P3371 已提交;课件已重写(2026-10-17):先手推四格表 → 逐轮推演表 → 盖章证明三行 → 堆优化与懒删除;P4779 仍缺两行快读、P3371 余一条 -Wsign-compare 警告 | 已提交 |
| 0412 最短路 II | 课件已出(Bellman-Ford / SPFA / Floyd + 负环检测),配题 P3385 待做(本地还没有代码) | 题待做 |
| 0413 最小生成树 | 下一课,配 P3366(Kruskal 直接拼 0410 的并查集 + 排序) | 可以开始 |
| ACM 校队提前入队 | 目标已定(2026-10-17),每周 11-20 小时;计划见 ACM 校队选拔训练计划;待打听招新时间 / 形式 / 门槛;10/18 广工月赛当第 1 场训练赛 | 进行中 |
| 千行任务 C++ 考核任务 | 代码已跑通并审阅(当时的参考文件已按新规则删除);待补 git 仓库、可用的 CMakeLists.txt 后提交。ACM 线启动后暂缓 | 暂缓 |