- 博客(27)
- 收藏
- 关注
原创 ch07 题目参考思路
易错点:注意最长的路径不一定是从左上角出发的,根据 dfs(x, y) 的功能,思考 main() 函数怎么写才能得到正确答案。知识点:DFS 解决判断问题、状态标记优化。知识点:DFS 解决判断问题、状态标记优化。知识点:路径问题、记忆化搜索、基本计数原理。知识点:路径问题、最优化问题、记忆化搜索。知识点:网格路径问题、DFS 搜索优化。
2025-04-11 17:41:58
824
原创 ch07课堂参考代码
用数组标记一个状态是否被搜索过,搜索过则直接 return,不用再执行函数,用于保证每个状态只被搜索一次。,通过判断 x 是否被搜索过,搜索过则直接return结束函数,将 vis[x] 赋值为 true,表示当前搜索到 x 了,之后不用再重复搜索需要标记优化的情况:可能会重复搜索同一个状态,并且状态的表示要比较简单(用少数几个变量就能表示一个状态)。状态用一个变量表示,就用一维数组标记,状态用两个变量表示,就用二维数组标记,以此类推。
2025-04-11 17:39:58
495
原创 ch07 部分题目思路
贪心地按照 从大到小 的顺序,对还未访问过的结点作为起点进行 dfs 或 bfs 遍历搜索,如果从结点 u 出发能到达结点 v,那么 ans[v] 的值为 u。如果对于每个结点 v,都从 v 出发进行一次 dfs 或 bfs 遍历计算 ans[v] ,时间复杂度为 O(nm),会超时。因为是无向图,“v 能到达的结点”也就是“能到达 v 的结点”,问题转换为求解能到达结点 v 的编号最大的结点。记从结点 v 出发能到达的编号最大的结点是 ans[v]。
2025-04-11 17:34:37
921
原创 ch06 题目参考思路
使用组合计数的乘法原理进行分步计算,依次计算男生的排列方案数、老师的排列方案数和女生的排列方案数,再将三者相乘。用排除法,先求出不可能越狱的方案数,总数 - 不可能越狱的方案数 = 可能越狱方案数。种选择,后面的每个房间为了与前一个房间选择不同,有。用排除法,先求出老师任意排列且女生不相邻的方案,记作。再减去老师一定连续且女生不相邻的方案,记作。不可能越狱的方案数:第一个房间有。注意:本题没有取模,答案会很大,知识点:组合计数、计数模型。知识点:组合计数、计数模型。知识点:组合计数、计数模型。
2025-04-03 10:59:12
983
原创 ch06 课堂参考代码及部分题目思路
也叫多项式哈希,是将字符串 s 看作一个 p 进制数字,算出这个数字的值就是字符串 s 的哈希值。哈希数组 h[] 的计算子串哈希值的计算hR−hL−1∗pR−L1p0p1p2⋯pn代码。
2025-04-03 10:47:30
355
原创 ch05 课堂参考代码及部分题目思路
字典树(Trie)是一种用于实现字符串快速查找的多叉树结构,查找原理类似于我们在英文词典上查找单词。字典树用边来代表字母,从根结点到树上某一结点的就代表了一个字符串。
2025-03-28 17:59:10
943
原创 ch05 题目参考思路
知识点:模运算、除法取模、逆元、等差数列求和公式。知识点:模运算、除法取模、逆元、等比数列求和公式。的值,记录它第一次出现的位置,对于每个。满足这个条件,用这个区间长度更新答案。出现的位置(即符合条件的最小的。后,找一个最大的下标范围。知识点:因子个数、线性筛。知识点:因子总和、线性筛。知识点:线性筛、埃氏筛。知识点:模运算、前缀和。
2025-03-28 17:51:35
715
原创 ch05 课堂参考代码
目标:筛选出1∼n范围内的所有素数(质数)为了让时间复杂度是线性的On,需要保证每个合数只被标记一次,不能重复标记。欧拉筛的做法是令 x 只被它的最小质因子p1乘以i标记为合数。为了做到这一点,当i % p == 0时,就不用枚举更大的质数了,可以跳出循环。欧拉筛不止可以用来筛素数,也可以在筛素数过程中顺便记录每个数的最小质因子、最小质因子对应的指数等。
2025-03-28 17:48:15
918
原创 ch04题目参考思路
思路:尝试插入一个新的线段 [L, R] 时,需要将所有与 [L, R] 相交的线段合并进来,从而扩展 [L, R] 成为一个更长的线段,并移除所有被合并的线段。思路:本题在“二叉查找树 I”问题的基础上,进一步实现了查找节点前驱和后继的功能。思路:通过模拟 multiset 的操作来解决问题。知识点:二叉查找树模拟。
2025-03-14 14:23:15
416
原创 ch04 课堂参考资料
二叉搜索树上的基本操作所花费的时间与这棵树的高度成正比最坏情况下树退化成一条链,每次操作复杂度 O(n)随机情况下,树的高度比较均衡,每次操作复杂度 O(log n)对于多个相等的多个权值,合并到一个结点上,用一个成员变量 cnt 记录当前结点权值个数。
2025-03-14 14:19:55
748
原创 ch03 二分题目参考思路
思路:本题与 “数列分段” 问题类似。首先,将输入的时间按从小到大的顺序排序。题目的目标是将时间数组分成。,并且每段的最大时间差(即这一段的最后一个时间与第一个时间的差)要尽可能小。段,每段的长度不超过。知识点:整型二分查找。知识点:整型二分查找。
2025-03-07 16:31:13
641
原创 ch03 二叉堆题目参考思路
的下标、二叉堆的下标(即节点编号)以及节点的权值,确保不会混淆这三者。知识点:对顶堆、multiset 的使用。中的节点时,也必须同步交换它们在。在一个空的黑匣子中依次加入元素。可以使用对顶堆来实现这一查询操作。本题难点在于清晰区分输入数组。的选手可以获奖,那么在第。大的元素,这等价于查询第。知识点:对顶堆、第 k 大。个选手时,需要查询第。知识点:对顶堆、模拟。知识点:二叉堆的模拟。知识点:二叉堆的模拟。
2025-03-07 16:21:44
748
原创 ch02 - 二叉树及其遍历
思路:由于二叉树是树的一种特例,因此可以直接采用第一章中介绍的普通树计算子树大小的方法。的节点数量,然后通过比较得出。知识点:二叉树的遍历、节点的深度。中的最大值,即为二叉树的宽度。知识点:节点的深度、打擂台。知识点:二叉树的重构。知识点:二叉树的重构。知识点:二叉树、递归。
2025-02-28 15:22:55
369
原创 ch01 题目参考思路
思路:将课本【例1.6】矩形覆盖问题中,二维区间每次加 1 修改为增加 d。思路:将课本【例1.5】线段覆盖问题中,区间每次增加 1 修改为增加 d。知识点:利用前缀和求解区间异或和。知识点:差分数组的构建与应用。思路:使用异或运算进行差分。知识点:二分差分、离散化。
2025-02-21 15:24:50
854
原创 ch01 课堂参考代码
容器 G[i] 储存与结点 i 相邻的结点(即 i 的父结点和所有子结点)。如果输入的边已知父子关系,也可以只存 i 的所有子结点。
2025-02-21 15:18:14
258
原创 ch01 - 树的概念与遍历
思路:通过记录每个节点的子节点列表,将有根树存储在邻接表中,并使用深度优先搜索(DFS)进行遍历。思路:在求最近公共祖先的过程中,累加从节点 u 和 v 向上走时经过的边的权重。知识点:树的存储及深度优先遍历(DFS)知识点:最近公共祖先、树上两点之间的距离。知识点:树的遍历、节点深度、树的高度。知识点:子树的大小、打擂台。
2025-02-21 15:15:56
315
原创 算法 I ch12 - 动态规划:背包问题 II - 题解
而分组背包以“组”作为 dp 的阶段划分,第 i 个阶段只考虑前 i 组物品,状态转移就是第 i 组物品取不取,取哪个的决策。有 4 种情况,每种情况拼成一件“大物品”,这 4 件“大物品”最多只能选其中一件,转换为分组背包问题,每个主件对应的 4 件“大物品”在同一组中。dp[i][j] :前 i 类物品中,选出总重量不超过 j 的若干物品的最大总价值。dp[i][j]:前 i 组物品中,选出总重量不超过 j 的物品的最大总价值。dp[i][j]:前 i 类物品,选出总重量恰好为 j 的物品选取方案数。
2025-02-09 08:55:37
887
原创 ch10 - 动态规划:二维 DP
一种状态表示是 dp[x1][y1][x2][y2]:第一条路走到 (x1, y1),第二条路走到 (x2, y2) 的最大取数之和。dp[i][x1][x2]:两条路都走了 i 步,第一条路到达第 x1 行,第二条路到达第 x2 行时的最大取数之和。dp[i][j]:将 i 个物品分为 j 组的方案数(限制第 1~j 组的物品数量从大到小,每组不能为空)边界:走 0 步时在起点,取到起点的数,dp[0][1][1] = a[1][1]。状态转移:考虑公共子序列中选不选 a[i]、b[j]
2025-02-08 17:28:45
488
原创 ch11 部分题目思路
前面已经通过状态转移方程观察到,计算第 i 阶段的值 dp[i][] 只要用到第 i - 1 阶段的值 dp[i-1][],再观察第二维(列)可以发现计算 dp[i][j] 时只会用到 dp[i-1][0~j] 的值,不会用到第 j 列后面的值。每一阶段 dp[i][] 的计算,只与上一阶段 dp[i-1][] 的值有关,前面的 dp[i-2][]、dp[i-3][]…01 背包的限制是只包含前 i - 1 个物品,然后才能加入第 i 个物品,对应的最大价值是 dp[i-1][j-w[i]]
2025-02-08 11:05:49
747
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人