星星之火OIer:寒假学习总结

这篇博客是作者作为OIer的寒假学习总结,主要涵盖了最短路算法(Floyd、Dijkstra、Bellman-Ford、SPFA)、生成树(Prim、Kruskal)、LCA的多种实现以及数论基础(辗转相除法、筛法)。作者在学习过程中感到一些困难,尤其是数论部分,但也认识到自己的进步空间,决心继续努力提高。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

emmm。。。

经过12天的培训,感觉整个人都已懵逼。。。

前言

这次寒假的培训,讲了许多的知识,虽然不能一次性全部消化完,后续还要继续补充学习,但我还是收获了许多。

前六天主要讲了最短路,生成树,LCA和树形DP,而后六天讲的就是数论。

可能因为最短路这些前面有些提及,大部分还是听得懂,但到数论就真的只能说是一脸懵逼了(相信有很多人跟我是同样的感觉)

知识点

最短路:

多源点:

  • floyd,特点:三重循环时间复杂度相比较高,但是是现阶段唯一一个可以做多源点的算法

单元点:

  • dijkstra,特点:首先不能有负边权,虽然可以修改算法得到正解,但遇到特殊数据会被卡到指数,然后用贪心的思想,由离s前k-1近的点就可以得到s第k近的点。
  • bellman-ford,特点:可以处理负边权,设 dis [ i ] [ j ] 表示从源点 s 最多经过 i 条边到达终点 j 的最短路长度,则 ​dis [ i ] [ j ] = min ( dis [ i ] [ j ] , min ( dis [ i - 1 ] [ v ] + w ( v , j ) ) )  当然,dis要预先处理为极大值。
  • spaf,特点:可以处理负边权,从源点出发,依次松弛每一个点。

生成树:

  • prim,特点:找每一个树之外的离树最短的点,复杂度O(V^2),适合稠密图(V代表点的个数)。
  • kurskal,特点:对边权排序,依次添加,形成环就跳过,复杂度O(ElogE),适合稀疏图(E代表边的个数)。

LCA:

  • 这个是比较齐的LCA
  • 暴力,特点:先处理到相同深度,然后一层一层往上爬,直到相遇,复杂度最高,O(n),好写,避免卡数据。
  • dfs序+rmq(没太懂,搞清楚再说哈)。
  • 倍增,特点:还是先处理到相同的深度,但每次爬2^i次方的高度,复杂度O(logn)。
  • tarjan,特点:离线算法,先记录所有的要查询的点,一次dfs求出所有点的LCA。

树形DP:

  • 就像DP一样,只是在树上做DP。

数论:

  • 辗转相除法,在O(nlogn)的时间内求出两个数的最大公约数。
  • 埃拉托斯特尼筛法,O(nloglogn)求出1~n里的质数。
  • 欧拉筛法,O(n)求出1~n里的质数。

数论内容太多,这里不一一列举了。。。

分析

再来总结一下最近的学习吧。

感觉还是有点跟不上大家的脚步,理解得比较慢,再加上这一次讲解的知识很多,没有来得及消化,所以可能做题情况不是很好。

但是,还是要加油赶啊。

最近两次考试也不是很理想,总共只有20分,虽然第二次不应该爆零,但是从中也能看出自己的不足。

总结

其实吧,自我感觉还是有点力不从心了,感觉自己快要退役了。

但是,我还是要努力留在编程社。

至少,也要再走一年。

在这一年里,也要竭尽全力了。

至少要让自己在编程社的时光不留遗憾!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值