- gf24240 的博客
《梦溪笔谈·笔记》2025/7/16~8/10:暑假课程总结
- 2025-8-15 18:48:47 @
前言[1]
暑假要过完了。。。
这段时间(2025/7/16~8/10)的内容:
- 7/16 ~ 7/21 :动态规划
- 7/22 ~ 7/26 :数据结构
- 8/1 ~ 8/5 :数论
- 8/6 ~ 8/10 : 数学问题
实际上这篇 blog 更像一个目录。如果有问题请指出。
目录:
动态规划[2]
动态规划(以下简称 DP )是一种思想。通过把问题分解为 重叠的 子问题,逐个求解,最终得到整体的答案。
DP 的三个特征:
- 无后效性;
- 重叠子问题;
- 最优子结构。
解决 DP 问题的步骤:
- 分析问题。分析是否符合特征。
- 定义状态变量。从问题出发。
- 状态转移方程。合并子问题的解。
- 初始状态和边界。避免出界。
- 答案。
线性 DP
参考: 2025/6/26:线性动态规划 、2025/7/16:线性DP&01背包 。
背包 DP
就是一些物品和价值,怎么装最优。
参考: 2025/7/16:线性DP&01背包 、 2025/7/17:背包DP 。
区间 DP
这一块有点阴。
参考: 2025/7/19:区间DP 。
倍增 ST 表
其实这不是 DP ,但是用到了类似 DP 的思路。基本上是套模板。
Log[0] = -1;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
f[i][0] = a[i];
Log[i] = Log[i >> 1] + 1;
}
for (int j = 1; j <= Log[n]; j++)
{
for (int i = 1; i + (1 << j) - 1 <= n; i++)
{
f[i][j] = min(f[i][j - 1], f[i + (1 << (j - 1))][j - 1]);
}
}
for (int i = 1; i <= m; i++)
{
int l, r;
cin >> l >> r;
int k = Log[r - l + 1];
cout << min(f[l][k], f[r - (1 << k) + 1][k]) << "\n";
}
参考: 2025/7/21:倍增 ST 表 。
数据结构[3]
应该可以这样称呼,如果图和数也是数据结构的话。
链表
链表可以分为:
- 动态链表。麻烦又难写的。但是 they (选择题)就是要出动态链表。
- 静态链表。适合信奥。
- STL 链表。适合偷懒。
参考: 2025/7/22:链表 。
图
有向图、无向图、稀疏图、稠密图、无权图、甲醛加权图 bala bala bala 都数不过来。
图是由点和边组成的二元组。例如:

图的存储和遍历可以分为:
- 邻接矩阵;
- 邻接链表;
- 前向星。
参考: 2025/7/23:图的存储和遍历 。
树
树有特殊树(没什么用)、二叉树(很多性质)、二叉树扩展(更多性质了)、哈夫曼树(用于编码)。
参考: 2025/7/23&24:树论 、 2025/7/25:哈夫曼树&二叉搜索树 。
数论[4]
在数学上的东西。掌握了能掌握。 可能对代码优化有点帮助。
数学问题[5]
更接近信奥的数学。