C++ / ACM 自学笔记 · v5.0

分阶段练习索引

阶段 先掌握 建议练习
语言入门 输入输出、循环、数组、函数、类型 数位统计 P1554
引用与模板 值传参、引用、auto、lambda、模板参数 T 用同一模板处理整数和小数,手算类型代入
语法基础中的 STL string、vector、迭代器、排序、集合与映射 排序去重 P1059
传递计算动作 std::function 的签名、保存动作、回调与递归调用 手算规则替换与调用返回,再运行本章例题
建模与提交 提取变量与约束、反例与证明、一题多模型、WA 排查与小规模对拍、大整数运算、提交模板 数的性质 P5710、数列分段 P1182
基础技巧 枚举、复杂度、前缀和、差分、双指针 区间和 P8218、区间修改 P2367
数论与结构 GCD、筛法、快速幂、并查集 快速幂 P1226、并查集 P3367
算法策略与搜索 归并排序、二分、贪心、DFS、BFS、回溯、记忆化 迷宫 P1605、二分答案 P1182
动态规划与图论 从记忆化过渡到线性 DP、二维 DP、背包、最短路与生成树 背包 P1048、最短路 P3371

上表把各阶段的内容与练习接在一起,可配合自己选定的路线查阅。先用基本类型和原生数组写程序,再从引用、模板 T 走到 STL 和 std::function;算法部分从搜索与重复计算走到记忆化和 DP。

搜索章节最后学习记忆化搜索,随后接动态规划;两者的状态与前驱相同,计算顺序不同。

每学习一个模板,先手算一个小例子,再用自己的变量名实现一次。试着解释“这一轮处理什么、为什么这样更新、怎样得到答案”,比记住代码形状更有帮助。

查阅笔记正文与全部题解 · Ctrl / ⌘ K