5.15 训练周记

本周主要学习了最小生成树相关算法,剩下的就都是练习了。这周做的练习有点多,有优先队列的(个人认为难度挺大的)还有并查集和一些图论的题目。但是由于题目太多了,打算找个时间写博客总结分类一下。

一.最小生成树

最小生成树单独写了一篇博客,就不过多赘述,主要说说经过练习之后对Kruskal和Prim的一些认识。

最小生成树 Kruskal 和 Prim算法及堆优化_Brokenrivers的博客-CSDN博客

首先求最小生成树一般有 Prim 算法与 Kruskal 算法,其中,Prim 算法时间复杂度为 O(V*V),与图中边数无关,适合稠密图;Kruskal 算法时间复杂度 为O(ElogE),需要对图的边进行访问,适合稀疏图。

同时Prim算法也可以用优先队列优化每次取出蓝区最小权值顶点的操作,使复杂度降为nlog,但实际使用上并没有那么大的提升,因为实现的常数太大了,一般的Prim也够用。目前用的比较多的就是Kruskal算法,因为他思想和实现都较为简单,本质其实就是并查集的一种应用情形。而且因为是从边出发,和并查集关系紧密,常被拿来求一些可以用贪心解决的图论问题。

二.谈谈这段时间训练对我个人的影响

从上学期末学习动态规划和搜索开始接触算法也有5个月了。要说学习ACM对我的影响,我觉得最大的就是思维,然后是独立解决问题的能力。

这里独立解决问题的能力不只是自己把一道难题写出来,而更多的是搜索资料,和自学的能力。我学到的很多知识都不是事先被安排好自己才去学习的。大多都是遇到了一个问题,不知道如何解决,选择去搜索资料或者问有经验的人,这时候一般还不至于完全解决问题,因为查到的文档和别人说的知识点我都不一定清楚是什么,于是我就会继续学习这个新发现的知识,直到我自己能够把整个问题的解决自洽了整个问题才能算结束。

因此,我不仅学到了很多而外的知识(不仅限于ACM)更有了解决问题的经验和底气。

最后就是思维,我觉得这个不好评判,但是经过这么长时间的训练,我能感觉自己很明显在解决编程相关跟ACM学习的算法无关的地方也有比很多同学更深的理解。同时,从开始好好打cf开始,自己能解决的思维问题也更多了,不再只是盯着题解想不出他是怎么想到这种思路的,以前觉得高深的算法和奇特的思路似乎也不再那么难以理解。因为写题积累的语言基础也让我学习其他语言的时候更加得心应手,这都是打ACM带给我的。

最后我还想谈谈这段时间的经历,选修了ACM课和组了队伍,我的学习不再是一个人,周围有很多优秀的人,他们时刻提醒我不要自我感动,提升自己真正的实力才是重中之重。这段时间,我和队友一起训练,和队友一起打模拟赛,一起熬夜打cf都让我很开心,跟其他同学比赛争取名次,加班加点完成教练布置的变态题目 让我知道我自己真正是在做什么,而不是浑浑噩噩随波逐流,我觉得这就足够了,虽然这段时间也会有沮丧和失落,比如写不出题目,想不明白思路,为了训练不得不翘课和晚自习,被舍友同学误解。又或者是有人看完题解就来指指点点之类的,但总体可以称得上是一段难忘的经历。特别是临近省赛的这段时间,基本除了高数这种重要课程,剩下的时间都去机房训练。周末可以在机房坐上一天,我感觉我的时间都过的很充实。

不知不觉打这么多字了,本来是太累了想水一篇博客,但是写着写着就停不下来。最后还是希望能坚持下去吧,毕竟算是人生第一次真正的在奋斗了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值