跳转至

Python · 笔试与竞赛

算法笔记

从 print("Hello") 一路写到树链剖分。89 章正文按顺序读就是一条完整的路, 配套 366 道真题在站内直接看思路和完整源码,不用跳出去翻仓库。

  • 89章正文
  • 366道真题
  • 366题通过判题机

从头开始读 直接看题解

和别的算法教程不一样在哪

题解

每一份都真的提交过

366 道题在官方判题机上拿到过真实判定,不是「思路应该没问题」。 过不去的会写清为什么——包括那几道 CPython 常数过不去、只能换 PyPy3 的。

正文

印出来的代码本身能跑

正文里的代码块不是示意。它们被单独抽出来喂官方样例跑过, 跑不过的不许印在正文里,抄下来就能用。

路线

一条主线,不跳步

89 章按依赖顺序排好,每章开头写清前置。 不是知识点的堆叠,是从语法到省选难度的一条连续的路。

怎么读

01

零基础,想系统过一遍

从 卷一 顺序读到 卷三,每章末尾的例题当场做掉。 章节底部有「上一章 / 下一章」,一路点下去就行。

从第一章开始

02

只想补某个知识点

在下面的章节盘里找,或者用右上角搜索。 每章开头的引言写清了它依赖哪几章。

跳到章节盘

03

在刷题,卡在某道题上

按题号找题解。每页都写了「这题考什么、数据规模、坑在哪」, 再往下是能直接跑的完整代码。

按题号查

三卷分别是什么

53章

卷一 · 核心卷 Python 语法、竞赛基本功、数据结构与基础算法。 笔试面试要用的东西基本都在这一卷,读完就能开始刷题。

29章

卷二 · 提高卷 图论、动态规划、数学与字符串算法。 开始出现「知道名字也未必写得对」的东西,模板与坑点都写在正文里。

7章

卷三 · 竞赛卷 平衡树、树链剖分、CDQ 分治、整体二分这一类。 省选难度,正文默认前两卷已经读完。

关于 Python 的常数

正文默认用 CPython 的写法。少数几道题 CPython 物理上过不去,题解页会标出 pypy3, 原因写在那一页的「为什么必须 PyPy3」里。

全书章节

章号就是全书的地图:01–16 是语法,20–24 是竞赛基本功,30 往后按数据结构、算法、专题递增。 右侧的数字是这一章配了几道真题。

Python 基础16 章

  1. 01语法与执行模型1 题
  2. 02数据类型与转换3 题
  3. 03运算符与位运算4 题
  4. 04字符串4 题
  5. 05列表1 题
  6. 06元组与序列通论1 题
  7. 07字典1 题
  8. 08集合2 题
  9. 09推导式2 题
  10. 10条件与循环2 题
  11. 11函数1 题
  12. 12自定义排序6 题
  13. 13内置函数速查3 题
  14. 14标准库速查3 题
  15. 15面向对象、迭代器与生成器1 题
  16. 16模块、异常与文件1 题

竞赛基本功4 章

  1. 20输入输出处理18 题
  2. 21复杂度与 Python 性能3 题
  3. 22高精度与大整数3 题
  4. 23浮点与科学计数法3 题

数据结构15 章

  1. 30序列与数组6 题
  2. 31链表31 题
  3. 32栈11 题
  4. 33队列与双端队列1 题
  5. 34集合与多重集合2 题
  6. 35优先队列与堆9 题
  7. 36哈希表11 题
  8. 37单调栈6 题
  9. 37A单调队列3 题
  10. 38并查集3 题
  11. 39树状数组
  12. 39A线段树4 题
  13. 39B分块1 题
  14. 39CST 表1 题
  15. 116平衡树与有序集合2 题

基础算法11 章

  1. 40排序7 题
  2. 41桶计数与离散化2 题
  3. 42前缀和与差分7 题
  4. 43双指针与滑动窗口20 题
  5. 44二分17 题
  6. 46位运算5 题
  7. 47贪心18 题
  8. 48构造7 题
  9. 49模拟12 题
  10. 118B分治的三步框架4 题
  11. 45倍增3 题

搜索6 章

  1. 60DFS 深度优先搜索18 题
  2. 61BFS 广度优先搜索13 题
  3. 62记忆化搜索与剪枝4 题
  4. 115精确覆盖与 Dancing Links1 题
  5. 115A迭代加深与 IDA*
  6. 115B双向搜索

字符串5 章

  1. 36A字符串哈希1 题
  2. 70字符串处理9 题
  3. 73Trie 字典树2 题
  4. 71字符串匹配 KMP1 题
  5. 72回文4 题

数学10 章

  1. 80数论基础5 题
  2. 81快速幂与逆元3 题
  3. 85基础数学与递推7 题
  4. 24多项式1 题
  5. 50博弈论3 题
  6. 82欧拉函数与欧拉降幂2 题
  7. 83整除分块与数论进阶4 题
  8. 84组合数学5 题
  9. 111偏序集与 Dilworth 定理2 题
  10. 114同余方程组与离散对数2 题

图与树11 章

  1. 90图的表示与遍历2 题
  2. 91最短路4 题
  3. 92最小生成树2 题
  4. 93拓扑排序1 题
  5. 93A二分图2 题
  6. 94树的基础与遍历29 题
  7. 94ALCA 与树上路径4 题
  8. 112强连通分量1 题
  9. 112A割点与桥
  10. 113树链剖分2 题
  11. 117图论进阶:k 短路与关键路径2 题

动态规划8 章

  1. 100DP 入门9 题
  2. 101背包问题14 题
  3. 102线性 DP24 题
  4. 103区间 DP1 题
  5. 103A树形 DP2 题
  6. 103B状压 DP
  7. 103CDAG 上的 DP1 题
  8. 104DP 优化3 题

计算几何1 章

  1. 110计算几何入门2 题

通用技巧2 章

  1. 118CDQ 分治1 题
  2. 118A整体二分

题解与速查