第 8 章 · 01 OJ 实战串联与备赛节奏
本节定位:对应 OI Wiki docs/contest/(比赛与训练)。难度:贯穿全部。前置依赖:前 7 章。本节是全书最后一节,做两件事:①把前 7 章的知识落到具体 OJ 题目上做实战串联;②给出从入门到省选的备赛时间节奏;③回顾全书八张学习地图。
⚠️ 注意:学算法的终极目标是"能在比赛中写出代码"。看懂 Wiki 和本地图 ≠ 会做题,唯一捷径是持续刷题 + 赛后补题。本节是地图的收尾,也是实战的开始。
OJ 题目实战串联
不同 OJ、不同难度分级的题目,对应本地图的不同章节。下面给出"用 Wiki 哪些知识解这类题"的索引。
洛谷题库(按难度分级)
- 入门题(红/橙):用第 2 章算法基础(枚举/模拟/递归/二分)+ C++ STL。如 P1001 A+B、P1424 小玉游泳。
- 普及- / 普及+(黄/绿):用第 4 章图论(最短路/最小生成树)+ 第 5 章 DP(背包/LIS/LCS)。如 P1118 最短路、P1048 采药(0-1 背包)。
- 提高+ / 省选-(蓝):用第 3 章数据结构(线段树/Treap)+ 第 6 章数学(数论/组合)。如 P3373 线段树、P3383 线性筛。
- 省选 / NOI(紫/黑):用第 4 章网络流、第 5 章 SAM、第 6 章 FFT/NTT、第 7 章几何与莫队/插头 DP/LCT。如 P3804 SAM、P3803 FFT、P3690 LCT。
Codeforces(按 Div 级别)
- Div 2 / Div 3 的 A、B、C 题:用第 2 章基础 + 第 5 章 DP 入门,偏思维和实现速度。
- Div 2 的 D、E、F 题:用第 3 章数据结构 + 第 4 章图论 + 第 6 章数学,偏算法综合。
- Div 1 的 E、F 题:省选/IOI 级,用到 SAM/FFT/LCT 等难点。
AtCoder(按赛事)
- ABC(AtCoder Beginner Contest):A-D 用基础,E-F 用进阶(数据结构/DP/数学)。
- ARC/AGC:高难度,常需第 6-7 章的难点算法。
怎么高效刷题
- 专题集训法:一段时间内只刷某一类(如连续两周只刷线段树、一个月只刷字符串)。集中突破比零散刷效果好,能快速建立"模型直觉"。
- 赛后补题法:参加 Codeforces/AtCoder 比赛后,把没做出的题补掉(看题解 + 自己重写)。补题是涨分最快的途径,不补等于白打。
- 题解参考 OI Wiki:看题解时遇到不熟的知识点,回 Wiki 对应
docs/ 页面系统补。本地图的导航就是为这个设计的——题目 → 知识点 → Wiki 页面。
- 错题本:把 WA 过的题、卡了一小时以上的题记录下来,定期重做。算法竞赛的进步来自"不再犯同样错误"。
备赛节奏
按"入门 → 进阶 → 高阶 → 冲刺"四阶段,给出建议时长(因人而异,快慢都正常)。
入门阶段(约 3-6 个月)
- 目标:C++ STL + 算法基础 + 洛谷入门题。
- 内容:第 2 章(语言基础/算法基础)、洛谷入门-普及题 100 道。
- 里程碑:能独立写出枚举/模拟/二分/简单贪心,会 basic STL。
进阶阶段(约 6-12 个月)
- 目标:数据结构 + 图论 + DP + 字符串,专题突破。
- 内容:第 3 章(线段树/Treap)、第 4 章(最短路/网络流)、第 5 章(背包/KMP/AC 自动机)、第 6 章数论基础。
- 里程碑:洛谷普及+/提高- 题能独立做出,CSP-J/S 拿奖。
高阶阶段(约 3-6 个月)
- 目标:数学 + 计算几何 + 杂项难点。
- 内容:第 6 章 FFT/NTT、第 7 章几何 + 莫队/插头 DP/LCT、第 5 章 SAM。
- 里程碑:能做省选题,对每个难点有自己的模板。
冲刺阶段(赛前 1-3 个月)
- 目标:真题模拟 + 查漏补缺。
- 内容:刷历年 NOIP/CSP/省选真题,限时模拟;整理模板库;针对薄弱点集中补。
- 里程碑:比赛状态稳定,模板能 5 分钟默写。
💡 学习提示:节奏因人而异,关键是持续。每天 2-3 题坚持一年,比集中突击一个月强。算法能力是"复利"增长,前期慢后期快。
OI Wiki 自带 docs/contest/roadmap.md 学习路线图,本地图在此基础上扩展,建议两者结合制定计划。
全书回顾
八章学习地图,一张表回顾:
| 章 |
主题 |
核心内容 |
难点(★) |
| 1 |
怎么用这份学习地图 |
定位:导航+增量,不重写 Wiki |
— |
| 2 |
入门:语言与算法基础 |
C++ STL、复杂度、枚举/递归/二分/贪心 |
— |
| 3 |
进阶一:数据结构 |
栈/队列/树/堆/并查集 |
线段树 / Treap ★ |
| 4 |
进阶二:图论 |
最短路/最小生成树/连通分量 |
网络流 ★ |
| 5 |
进阶三:DP 与字符串 |
背包/LIS/区间DP/KMP/AC自动机/Trie |
SAM 后缀自动机 ★ |
| 6 |
高阶:数学 |
数论/组合/概率/博弈 |
FFT/NTT/FWT ★ |
| 7 |
省选与 IOI 专题 |
凸包/旋转卡壳/半平面交 |
莫队/插头 DP/LCT ★ |
| 8 |
实战串联与备赛 |
OJ 实战 + 备赛节奏 + 全书回顾 |
— |
这张地图的用法:它不是教材,是 OI Wiki 465 篇扁平知识的分级导航 + 难点增量。每一节都指向具体的 docs/ 页面,难点节(★)做了 Wiki 之外的慢节奏讲解。学任何一个知识点,路径都是:地图定位 → Wiki 精读 → OJ 刷题。
学习心态与下一步
- 算法需要持续练习。看懂 ≠ 会写,每个算法都要亲手敲一遍、AC 一道题才算"会"。
- 多刷题多总结。刷题量是基础,但更重要的是总结——归纳"这类题的通用思路",把零散题目串成模型。
- 卡住很正常。SAM、FFT、LCT 这些难点,第一次看不懂是常态。放一放,过段时间回来,配合更多题目,会突然"开窍"。
下一步建议
- 参加真实比赛:Codeforces 周赛、AtCoder 周赛、洛谷月赛,把所学用到实战中。比赛节奏和平时刷题完全不同,必须靠比赛练出来。
- 反哺 OI Wiki:OI Wiki 是开源项目,欢迎贡献。学到深处时,把你的理解、新例题、新模板贡献回去,既巩固自己又帮助后来者。贡献方式见 OI Wiki 仓库的 Contributing 文档。
💡 学习提示:地图到这里结束,但学习才刚开始。这份地图的目标是让你不再迷路——知道下一步学什么、卡在哪该回哪补。剩下的路,靠刷题、靠比赛、靠坚持。
全书完。
本节要点
- OJ 实战:洛谷按难度分级对应不同章节,Codeforces Div2/AtCoder ABC 用基础,Div1/AGC 用难点。
- 高效刷题:专题集训 + 赛后补题 + OI Wiki 题解查漏。
- 备赛四阶段:入门 3-6 月(STL+基础)→ 进阶 6-12 月(数据结构/图论/DP/字符串)→ 高阶 3-6 月(数学/几何/难点)→ 冲刺(真题模拟)。
- 全书八章地图:1 用法 → 2 入门 → 3 数据结构(线段树/Treap★)→ 4 图论(网络流★)→ 5 DP/字符串(SAM★)→ 6 数学(FFT/NTT/FWT★)→ 7 省选(莫队/插头DP/LCT★)→ 8 实战。
- 地图用法:地图定位 → Wiki 精读 → OJ 刷题;下一步是真实比赛与反哺 OI Wiki。