算法笔记
十章,按“先保住会做的分,再去拿新的分”排序。每章的每个小节都标了优先级:
| 标记 | 含义 | 要求 |
|---|---|---|
| 【必会】 | 丢了就丢大分 | 考前能不看资料默写出来,10 分钟内写对 |
| 【常考】 | 近十年反复出现 | 理解原理,能照着模板写出来并调通 |
| 【了解】 | 多见于难题的正解 | 知道它解决什么问题,看得懂部分分表里的提示即可 |
时间只有两周,先把所有【必会】过一遍,再看【常考】,【了解】放到最后。
目录
| 章 | 文件 | 内容 |
|---|---|---|
| 0 | 00-考场基本功.md | 代码骨架、文件读写、long long 与 INF、读写速度、复杂度估算、编译与警告、对拍、检查清单 |
| 1 | 01-基础算法.md | 排序、二分与二分答案、前缀和与差分、双指针、离散化、贪心、位运算、STL |
| 2 | 02-枚举与搜索.md | 子集与排列枚举、DFS 回溯与剪枝、BFS、记忆化搜索——暴力分的来源 |
| 3 | 03-动态规划.md | 线性 DP、背包、区间 DP、状压 DP、计数 DP、常见优化 |
| 4 | 04-图论.md | 存图、最短路、并查集、最小生成树、拓扑排序、Tarjan、建模技巧 |
| 5 | 05-数据结构.md | 单调栈与单调队列、堆、ST 表、树状数组、线段树 |
| 6 | 06-树上问题.md | DFS 序、直径与重心、LCA、树上差分、树形 DP、换根 |
| 7 | 07-数学与计数.md | 取模、快速幂、逆元与组合数、筛法、计数原理、容斥 |
| 8 | 08-字符串.md | 字符串基础、哈希、KMP、Trie |
| 9 | 09-部分分策略.md | 怎么读数据范围表、链和菊花怎么做、暴力怎么写、时间怎么分 |
模板都是测过的
templates/ 下每个 .cpp 都是一个完整程序(标准输入输出,可以直接交到洛谷对应的模板题)。
每个模板都配了一份独立的朴素实现,随机对拍通过后才写进笔记:
python3 tools/check_templates.py # 全部重新对拍一遍,并核对笔记里的代码与模板文件一致
python3 tools/check_templates.py dijkstra # 只查一个
考场上要用文件读写,模板里没有 freopen;骨架见第 0 章。
怎么用模板
- 先读懂,再合上笔记自己敲一遍,交到洛谷模板题上验证。
- 敲错的地方记下来——那就是你考场上会错的地方。
- 考前三天,每天抽 5 个【必会】模板限时默写。