自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 学习笔记4:并查集

路径压缩的主要思路就是:每一次查询后,将自己和路径上的所有结点直接指向根节点,就比如我想知道我曾曾曾曾爷爷是谁,第一次要从父亲辈往上查,第二次就直接记住了,不需要再查一次,这样时间复杂度均摊下来就是O(1),如下图。其实这道题只需要开一个数组存一个人的敌人,当遇到两个人是敌人的话,就把敌人的敌人放到同一个并查集里,并把没有敌人的人的敌人设成这个敌人。第二种情况:4的根节点是1,6的根节点是5,6和4的根节点不一样,说明4和6不在同一个集合中。第一种情况:4和6的根节点都是1,那么4和6就在一个集合中。...

2022-08-11 17:46:37 347 1

原创 学习笔记3:floyd算法(多源最短路)

相比dijsktra算法于SPFA算法,floyd主要解决多源最短路算法,floyd于前两种算法的存图方式相比,floyd使用邻接矩阵而非链表来存图。不难发现,1-2+2-4是要比1-4小的,所以我们把1-4更改为1-2+2-4。我讲了关于图论中单源最短路的两种算法,这次来说一下多源最短路的算法:floyd。这样我们就了解里floyd的思想部分。...

2022-08-11 16:39:57 240

原创 学习笔记2:SPFA(SPFA他死了!)

SPFA解决负权回路:SPFA相比dijkstra的第二个优点是可以解决负权回路,在没有负权回路的图中,一个点最多被遍历一次,如果一个点被遍历多次,就说明遇到了负权回路,而SPFA中,即使一个点已经被遍历过了,也有可能再次入队,因此只需要用一个变量存总入队次数,如果入队次数不等于点数,就说明遇到了负权回路。中我曾说过dijkstra算法并不能解决带有负权的图,而SPFA就是在用来有负权图中的单源最短路问题,因为SPFA并不像dijkstra一样每个点只遍历一遍,SPFA中每个点会被重复遍历或重复更新。...

2022-08-11 15:58:01 765

原创 学习笔记1:Dijkstra算法(附洛谷P4779题解)

3.为什么Dijkstra算法可以找出最短路:设局部dis值最小的点为x,当前情况下所有点的dis值都比dis[x]要大,而在无负权的情况下,靠后的点的dis值一定比靠前的点的dis值大, 所以靠后的所有点的dis值也比dis[x]大,因此点x的dis值不会在接下来的求值中改变,这也是为什么Dijkstra算法只能用在无负权图上。枚举起始点的所有出边,更新于起始点相邻的dis并将起始点标记为确定,从dis数组中找到最小的数,枚举其出边并标记为确定,重复这个操作直到所有点被确定。...

2022-08-09 18:03:22 467

原创 P2627 [USACO11OPEN]Mowing the Lawn G 题解(单调队列+dp)

根据题目描述不能让超过k个奶牛连续起来,那么第i个奶牛要么不取,要么从i-k枚举到i枚举以i为尾的连续的奶牛的所有情况,就可以得出状态转移方程。不难发现,sum[i]是固定的,变化的只有dp[j]-sum[j+1],要dp[i]最大,只要dp[j]-sum[j+1]最大就行\。那么可以开一个单调队列,维护i到i-k区间内的dp[j]-sum[j+1]的最大值,这样对于dp[i]的求值就可以优化到O(1);显而易见的,可以用前缀和对状态转移方程进行优化,把求区间和的部分优化到O(1);...

2022-08-04 17:56:25 590

空空如也

空空如也

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

TA关注的人

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