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

使用方法

  1. 先选路线,再逐段学习。 根据下面的四条路线确定第一轮的必读内容;每完成一个阶段,再用对应练习检查理解。做题遇到新的工具或算法时,按目录回查。
  2. 每节按“题面 → 分析 → 代码 → 解释”阅读。 先尝试手算样例,再读实现;完整程序可以单独编译,函数片段要与本节头文件和调用片段组合使用。
  3. 区分示例和练习。 示例包含题面、分析、代码和样例解释,适合跟着手算、运行和修改;自拟题与外部题分别标明来源。练习题提供原题链接,读完一节后可以独立尝试。需要提示时,从附录进入题解仓库,先看建模与推导,再按需要读手算、图解和实现。
  4. 做完讲解再做练习。 每类算法附有洛谷或 Codeforces 的对应题目链接,只提供链接和必要的难度提示,不在练习区提前给答案。
  5. 把模板与题目联系起来。 手算它怎样处理当前数据,再解释每个变量、判断和循环的作用;遇到题目变化时,从这些具体步骤调整实现。
  6. 记录自己的错误。 WA 后先找反例,TLE 后先算复杂度;修正代码后,把触发问题的输入保留下来。

正文默认使用 C++17。序言给出快速 I/O、竞赛模板、多组输入与 EOF;第一部分先学习原生数组、函数、引用与模板,再学习 STL 和 std::function,第二部分介绍面向对象,第三部分讲解题意建模、证明、方法选择与 WA 排查,第四部分介绍缓冲批量输入、大整数四则运算和提交检查,第五部分学习数据结构与算法;必读内容见下面按学习目标划分的路线,做题时也可随时查阅。全文采用从 0 开始的下标;个别题目或完全二叉树编号使用 1 时会单独说明。

通过目录可以先找到所属部分,再找到章节与具体用法。例如“一、C++ 语法基础 → (十五)STL → 1. string → 1.1 用 string 保存和访问文本”。

阅读过程图时,先认清数组、下标和状态的含义,再沿箭头手算一轮。蓝色表示基本结构,绿色表示当前状态或计算结果,橙色表示舍弃、冲突或本轮正在比较的位置。

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