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

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分,虽然第二次不应该爆零,但是从中也能看出自己的不足。

总结

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

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

至少,也要再走一年。

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章