自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 如果在安装VScode出现一些错误,可能跟我是一个原因

或。

2025-05-16 22:56:19 207

原创 数据结构——链式前向星

是一种用于存储图结构(尤其是有向图)的高效数据结构,常用于图的遍历(如 DFS、BFS)、最短路径算法(如 Dijkstra、Bellman-Ford)、最小生成树算法等场景。的方式存储图的边信息,相比传统邻接表,具有代码实现简洁、空间利用率高、遍历效率稳定等优点。

2025-05-16 15:54:54 332

原创 数据结构——双向循环链表模板

访问后一个节点,且首尾节点相连形成环形结构。这种设计使得链表在遍历、插入、删除等操作上更灵活高效。特性的数据结构,每个节点既可以通过前驱指针()访问前一个节点,也可以通过后继指针(注:尾插与任意插都是差不多的。双向循环链表是一种结合了。

2025-05-15 22:09:22 316

原创 SPFA求单源最短路高效算法(Bellman-Ford优化版),判断图中是否存在负权圈

【代码】SPFA求单源最短路高效算法(Bellman-Ford优化版),判断图中是否存在负权圈。

2025-05-14 00:07:19 205

原创 求多源最短路——Floyd-warshall算法

对所有顶点进行Dijkstra求单源最短路定义dist[k][i][j]表示为最短路径经过[0,k-1]的顶点能够从i到j的最短路径有点像01背包,对于第k个顶点,可以选或不选不选:dist[k][i][j]=dist[k-1][i][j]选: dist[k][i][j]=dist[k-1][i][k]+dist[k-1][k][j];根据01背包的特点,可以将第一维直接去掉所以最终

2025-05-12 09:33:45 173

原创 Dijkstra朴素算法求最短路径

总得来说就是,从源点开始找,找源点所有当前未确定顶点中距离估计值最小的顶点(并且该顶点没有被确定最短路径)(一开始肯定找源点自己,更新源点的出边),找到之后,标记这个顶点u,通过这个顶点u更新其他顶点到源点的距离,以此类推,每次都找dist[i]最小的那个顶点。单源最短路、非负边权、连通图,顶点数最好小于5000。

2025-05-11 23:36:27 138

原创 Bellon-Ford算法求最短路径

O(VE) V为顶点个数,E为边数。有向图单源最短路,V*E<=1e6。

2025-05-11 22:10:25 116

原创 最小生成树(kruskal+路径压缩并查集)

注:e(u,v,w)代表u到v有一条权为w的无向边。

2025-05-10 16:02:21 209

原创 并查集路径压缩

单次查找时,通过路径压缩,树的高度会显著降低,时间复杂度为常数很小的O(1)先通过Find函数找到s1,s2的父节点,再将s1的父节点指向s2。多次查找时,时间复杂度接近O(n)键代表元素本身,值代表元素的。通过递归找到元素的根节点。

2025-05-10 13:12:41 264

原创 并查集启发式合并(按秩合并未经过路径压缩),时间复杂度为O(logn)

1.如果在未经过路径压缩的情况下,秩会始终等于树的高度(必须每个元素一开始的秩初始化为1),举个例子,A,B,C,D四个节点,A,B孤立,C与D相连,当A与B合并时,孤立元素合并秩+1,此时秩为2,再将CD的根节点指向AB的根节点,因为任意两颗树合并,都是根节点与根节点相连。根据Union函数可以看出,每当秩增加时,元素个数都要翻倍,经过 k 次合并后,元素数量至少为 2^k。先通过Find函数找到s1,s2的父节点,将秩更大的根节点最为秩更小的根节点的父节点。m_far[x]代表x的父节点。

2025-05-10 01:18:50 224

原创 并查集森林算法,时间复杂度为O(n*m),n代表元素个数,m代表操作上次数(合并或查找)

先通过Find函数找到s1,s2的父节点,再将s1的父节点指向s2。对于一个元素的父节点,一直往上找,直到找到根节点。对于每个元素,初始化它们的集合为本身。键代表元素本身,值代表元素的父节点。

2025-05-09 23:34:07 183

原创 并查集朴素版本,时间复杂度为O(n*m),n为元素个数,m为操作数

想要合并元素id1和元素id2的集合,只需要先通过Find函数找出各自的集合,通过枚举哈希表,找出所有集合为s2的元素,将这些元素放入集合s1中,至此,s1和s2合并完成。因为底层数据结构采用的是哈希表,所以在查找时间复杂度为O(1)键代表这个元素本身,值代表元素的集合。对于每个元素,初始化它们的集合为本身。

2025-05-09 22:52:52 171

原创 最小生成树Prim朴素算法剖析

2. 对于最小生成树集合中找一个顶点,这个顶点与未在集合中的顶点的边权最小。最小生成树(MST)问题是指在一个无向连通图中,找出其所有顶点的集合,最小生成树问题的关键是如何选择边,使得所选边的权值之和最小。Prim算法是一种贪心算法,它每次选择一条权值最小的边,并将其加入到最小生成树中,直到所有顶点都属于最小生成树。使得这些顶点之间都连通,且所选边的权值之和最小。3. 重复步骤2,直到所有顶点都属于最小生成树。1. 选择一个顶点,并将其加入到最小生成树中;Prim算法 最小生成树。

2025-05-09 15:26:20 296

原创 BFS简单迷宫问题

爱与愁大神买完东西后,打算坐车离开中山路。现在爱与愁大神在 x1​,y1​ 处,车站在 x2​,y2​ 处。现在给出一个 n×n(n≤1000) 的地图,0 表示马路,1 表示店铺(不能从店铺穿过),爱与愁大神只能垂直或水平着在马路上行进。爱与愁大神为了节省时间,他要求最短到达目的地距离(每两个相邻坐标间距离为 1)。你能帮他解决吗?

2025-04-24 14:42:04 282

原创 BFS入门题 求从起点到终点所需的最少步数

【代码】BFS入门题 求从起点到终点所需的最少步数。

2025-04-12 20:12:47 82

原创 洛谷P208烤鸡 dfs全排列

因为他有 $10$ 种配料(芥末、孜然等),每种配料可以放 $1$ 到 $3$ 克,任意烤鸡的美味程度为所有配料质量之和。现在, Hanke 想要知道,如果给你一个美味程度 $n$ ,请输出这 $10$ 种配料的所有搭配方案。第二行至结束,$10$ 个数,表示每种配料所放的质量,按字典序排列。对于 $100\%$ 的数据,$n \leq 5000$。如果没有符合要求的方法,就只要在第一行输出一个 $0$。一个正整数 $n$,表示美味程度。### 样例输入 #1。### 样例输出 #1。

2024-12-11 11:50:48 357

原创 结构体+排序练习题

对于大部分这种题目(对学生生日排序,理化生分数排序,员工工资排序)都可以用这种模板来写。

2024-11-28 20:52:16 190

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除