首页课程小红花墙

算法进阶 · 小纸条

选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。

第 1 章30第 2 章30第 3 章30第 4 章30第 5 章30第 6 章30第 7 章30第 8 章30第 9 章30第 10 章30第 11 章30第 12 章30第 13 章30第 14 章30第 15 章30第 16 章30第 17 章30第 18 章30第 19 章30第 20 章30第 21 章30第 22 章30第 23 章30第 24 章30第 25 章10
只印题目
第 1 页 · 正面(题目)
1树状数组

普通数组做这两件事各要多久?

2树状数组的原理

这个"跳"用了什么运算?

3线段树的思想

管理 8 个数的线段树有几层?

4线段树:建树

合并的方式由什么决定?

5线段树:查询

为什么"完全在区间内"可以直接返回?

6线段树:修改

单点修改要更新几个节点?

7选哪个结构

求区间最大值该用哪个?

8别过早上高级结构

怎么判断该不该上高级结构?

9手写一遍最有效

默写并查集的两个核心函数。

10阶段小结

画一张这一批的知识地图。

第 1 页 · 背面(答案)

参考答案(家长):位运算,取二进制最低位的 1。

参考答案(家长):修改快查询慢,或用前缀和则查询快修改慢。

参考答案(家长):由要维护的信息决定,求和就相加,求最大就取较大。

参考答案(家长):4 层(根管 8 个,往下 4、2、1)。

参考答案(家长):从叶子到根这条链上的所有节点,约 log n 个。

参考答案(家长):这个节点的值已经是这段的答案了,不用再往下拆。

参考答案(家长):先估算朴素做法的复杂度,超时了再考虑。

参考答案(家长):线段树,树状数组不擅长区间最值。

参考答案(家长):画完能看出哪一块还虚,那就是要补的。

参考答案(家长):find 带路径压缩,union 合并两个祖先。

第 2 页 · 正面(题目)
11动态规划的本质

用一句话概括 DP 和搜索的区别。

12无后效性

为什么无后效性是前提?

13最优子结构

最短路满足最优子结构吗?

14定义状态的方法

背包问题需要哪几个信息?

15状态设计的经验

最长上升子序列该用哪种?

16为什么要"以 i 结尾"

体会这个差别。

17线性 DP:最长上升子序列

这样是什么复杂度?

18最长上升子序列的优化

这个数组一定是递增的吗?

19最长公共子序列

状态该怎么定?

20编辑距离

三种转移各对应什么?

第 2 页 · 背面(答案)

参考答案(家长):否则存下来的答案会被后面推翻,就不能复用了。

参考答案(家长):搜索每次重新算,DP 把算过的记下来。

参考答案(家长):考虑到第几件物品、剩余容量多少。

参考答案(家长):满足,最短路的任意一段也是最短路。

参考答案(家长):状态要包含足够信息才能推出下一步。

参考答案(家长):以第 i 个结尾的最长长度。

参考答案(家长):一定是,长度越长结尾必然越大。

参考答案(家长):平方级,因为每个位置都要看前面所有位置。

参考答案(家长):删一个、加一个、改一个,各自从对应的子状态加一。

参考答案(家长):第一个串前 i 个和第二个串前 j 个的最长公共长度。

第 3 页 · 正面(题目)
21背包问题总览

这四种的核心差别在哪?

2201 背包再练

默写一维 01 背包。

23完全背包

两种背包的代码差几个字?

24多重背包

这样拆的问题是什么?

25二进制拆分

把 10 个拆成几组?

26分组背包

为什么容量要在组内物品的外层?

27背包求方案数

凑出金额 n 的方案数怎么写?

28背包求可行性

能否凑出金额 n,转移怎么写?

29背包求具体方案

这和最短路记录路径是不是一个思路?

30区间 DP 是什么

什么样的题适合区间 DP?

第 3 页 · 背面(答案)

参考答案(家长):外层枚举物品,内层容量从大到小。

参考答案(家长):同一件物品能用几次,以及有没有分组限制。

参考答案(家长):数量大时拆出来的件数太多,会超时。

参考答案(家长):只差循环方向。

参考答案(家长):保证同一组内只选一件。

参考答案(家长):1、2、4、3 共四组。

参考答案(家长):当前可行 或 减去这件后可行。

参考答案(家长):把每种面额的方案数累加。

参考答案(家长):合并石子、矩阵连乘、回文划分这类"合并/划分区间"的题。

参考答案(家长):完全一样,都是记前驱再倒推。

op599 课程