- 博客(8)
- 收藏
- 关注
原创 图论入门:从基础概念到经典算法
本文将从图的基本概念出发,介绍图的存储方式、几种经典的最短路算法(Floyd、Dijkstra、Bellman-Ford和SPFA),以及树的基本概念和遍历方法。图论是计算机科学中的重要工具,掌握图的基本概念、存储方式和经典算法是解决图论问题的基础。本文介绍了图的存储方法、最短路算法、树的基本概念和遍历方法,以及树形DP的初步应用。图(Graph)是由若干顶点(Vertex)和连接顶点的边(Edge)构成的结构,用于描述事物之间的关系。树的重心是指删除该节点后,图中所有连通块的最大尺寸最小的节点。
2025-02-19 15:39:21
413
原创 动态规划初步:线性DP与背包DP的入门指南
状态转移方程:`f(i, j) = max(f(i - 1, j - 1), f(i - 1, j)) + a(i, j)`,其中`a(i, j)`是第`i`行第`j`列的数字。- 如果选择第`i`个物品:`dp[i][j] = dp[i - 1][j - w[i]] + v[i]`(前提是`j >= w[i]`)- 状态定义:设`dp[i][j]`表示前`i`个物品在容量为`j`的背包中能获得的最大价值。-状态定义:设`f(i, j)`表示从顶部走到第`i`行第`j`列的最大路径和。
2025-02-16 15:45:45
537
原创 深度优先搜索与广度优先搜索
深度优先搜索和广度优先搜索是解决许多问题的强大工具。通过全排列问题和走迷宫问题,我们展示了DFS和BFS的基本应用。希望本文能帮助你更好地理解这两种搜索算法,并在实际问题中灵活运用。
2025-02-13 15:31:29
792
原创 基础数论知识
给定一个模数 m,如果两个整数 a 和 b 满足 a - b 能被 m 整除,那么我们称 a 和 b 模 m 同余,记作 a ≡ b (mod m)。根据费马小定理,如果 a 和 m 互质,那么 a^(m-1) ≡ 1 (mod m),因此 a^(m-2) (mod m) 就是 a 的乘法逆元。给定模 m 和整数 a(满足 gcd(a, m) = 1),称整数 b 为 a 关于模 m 的乘法逆元,如果满足 a × b ≡ 1 (mod m)。其中 x 就是 a 在模 m 下的乘法逆元(经过适当取模处理)。
2025-02-10 17:14:37
720
原创 数据结构的魅力:栈、队列、优先队列与ST表
想象一下,你把书一本一本地叠放在桌面上,最后放上去的书总是最先被拿走,这就是栈的典型应用场景。在C++中,栈通过`std::stack`实现,它的操作非常简单,但功能强大。在C++中,优先队列通过std::priority_queue`实现,默认情况下它是一个最大堆,即队首元素总是最大的。例如,在一个任务调度系统中,任务可以根据其紧急程度被分配不同的优先级,优先队列可以确保高优先级的任务先被处理。例如,在一个多任务操作系统中,任务会按照到达的顺序排队等待处理,队列就是实现这种调度的理想工具。
2025-02-07 15:05:12
293
原创 Day2: 二分查找与二分答案
2. 二分答案:假设当前二分的中间值为mid,计算以mid为小段长度时,能切割出的小段木头数量cnt。如果cnt >= k,说明mid是一个合法的长度,尝试更大的长度;2. 二分答案:假设当前二分的中间值为mid,尝试删除点,使得剩下的点之间的距离最小值为mid。如果删除的点数不超过m,说明mid是一个合法的最小值,尝试更大的值;当然,我们希望得到的小段木头越长越好,请求出x的最大值。二分查找的核心思想是利用数列的单调性,每次通过比较中间值与目标值的大小关系,将查找范围缩小一半,从而快速定位目标值的位置。
2025-01-26 15:27:12
736
原创 day1 学习记录总结(c++语言中的拓展语法和数据结构函数)
list是一种双向链表,支持在任意位置插入和删除元素,但不支持随机访问。• push_front(value)和pop_front():在头部插入和删除元素,时间复杂度为O(1)。• push_front(value)和pop_front():在头部插入和删除元素,时间复杂度为O(1)。• push_back(value)和pop_back():在尾部插入和删除元素,时间复杂度为O(1)。• push_back(value)和pop_back():在尾部插入和删除元素,时间复杂度为O(1)。
2025-01-23 22:45:36
374
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅