【反思】暑假集训反思-2017年

来源:互联网 发布:linux解压tar包 编辑:程序博客网 时间:2024/05/17 07:19

时光荏苒,为期5个周的暑假集训告一段落。回想5个周的暑假集训,有泪水,有收获,有后悔。想一想暑假集训前的自己,只感觉时光过得好快,最大的后悔恐怕便是集训时间自己并未在每一时刻全力以赴,进而使得自己并未迎来质的突破。寒假的集训,自己感觉每一时刻都在努力学习,每一天都收获累累,而暑假,自己却感觉有收获但并未达到自己的期望值,最大的原因恐怕就是自己脱离实际,自制力不足。
暑假集训,正常计划是每周4场组队赛,2场个人赛,周一和周五13点开始进行5个小时的组队赛,周二和周四12点开始5个小时的组队赛,周六上午8点30开始长度3个小时的个人赛,周六下午14点30开始长度3个小时的个人赛。周二和周四组队赛结束后还有跑步刷圈任务,一般跑步刷圈自己会晚上跑,中间有几次并未跑,一般组队赛结束后自己需要1个小时的睡眠恢复精力,而往往因为自己晚饭时间的效率低导致睡眠时间仅能达到20至30分钟,有的时候甚至会影响自己的晚上训练时间。最初的比赛自己通常是当天下午比赛,晚上补题,第二天上午补题或者学习一点新的知识点。
反思1:组队赛态度不积极,好几次比赛前半场把简单题做的差不多了,后半场面对难题的时候就往往放弃了,消极的等待比赛结束,浪费了大量的时间,其实想一想,在面对难题的时候,自己和队友认真思考,即使做不出来,也会有很大的提高,只是自己没有抓住提高点
反思2:不管做什么事情,不要消极,不要因为别人的消极想法导致自己也变得消极,当面对的环境无法改变时,不要消极,要积极在其中寻找能够靠近自己目标的提高点,就像是组队赛,或许自己抱怨组队赛太频繁,没有时间学习新的知识点,但其实自己可以想一想,组队赛中的难题有的是因为思路想不到,有的是因为知识点没有接触过,如果自己可以在组队赛接触没有学会的知识点,虽然当时或许不知道自己并未学习过,但自己可以努力思考,那样在晚上补题的时候提高效率专心补题,那样何尝不是学习了新的知识点,面对问题不要抱怨,找到可以接近目标的提高点,然后努力学习。
反思3:注意养成良好的作息习惯,集训时间因为熬夜玩手机,很多次造成第二天的学习效率低。按时早起有的时候不仅是创造了早上学习的时间,更是提高了一天的效率,或许会感觉早起往往上午会打盹,但是如果自己可以将早起的时间用在学习上,往往会创造更大的价值,有的时间需要休息思考,但按时早起无疑会提高一天的效率。每周保证一定强度的身体锻炼,训练期间有几天自己感到后背着凉刺痛和肌肉痉挛,不仅说明自己的作息习惯不佳,也一定程度反映出自己锻炼不足。视力的下降恐怕也离不开自己的用眼习惯不良,很多不良的习惯自己都需要改正。
反思4:少说话,多做事。很多时候自己的否定往往是缺乏对事件的认识和,言多必失,很多时候需要自己认真倾听,而不是急于评论。 好几次比赛的时候,和莹巨讨论题目的时候过于肯定自己的想法,没有和莹巨深入讨论,导致题目最终直接思路错误,以后不管是比赛还是生活,自己都需要谦虚,要少说话,多做事。
暑假集训自己有很多地方需要反思,而深入思考其实会发现,很多的错误往往是因为自己心智太稚嫩,不管是训练任务的适应性还是比赛的心态不稳,很多这种类似的错误都离不开自己的心智过于稚嫩,导致思考问题过于片面。现在自己不仅应该反思错误,也应该思考暑假学习到的知识,温习巩固。
收获1:线段树算法知识点。暑假集训之前,自己对于自己的数据结构知识体系一直非常不自信,很大原因或许便是因为之前寒假学习数据结构知识的时候有很多地方为了跟上训练进度速成抄模板没有对知识点进行深入的理解思考,导致基础不扎实,因此一直不相信自己可以做好,暑假集训的时候当自己慢慢尝试克服的时候,逐渐发现很多知识点其实并没有自己一开始想的那么艰难,有时候只有自己勇敢的迈出第一步,才有战胜困难,战胜自己的可能。对于线段树的学习寒假的时候为了跟上进度直接学习的模板,后来逐渐模板忘记了,便一度感觉自己真的很没天赋,在暑假的学习中当自己认真的面对的时候发现,我们是否可以将所谓的天赋理解为对学习方法的探索与掌握?现在思考一下线段树的知识点,总而言之,可以分为三大主干部分的操作,分别是建树,更新,查询,建树我们往往通过数组模拟建树,如果题目时间复杂度要求较高需要添加lazy标记(区间更新问题)时需要在建树时将lazy标记初始化,更新又可以分为单点更新和区间更新(单点更新进化版),单点更新相对较为简单,只需要暴力更新到点即可,而区间更新则需要通过lazy标记记录区间的更新状态,并且很多时候需要找到区间长度与更新要求的关系,进而通过lazy标记减少不必要的单点更新,正常查询操作相对基础,对于假期自己做的线段树题目,大部分考察基本都是围绕更新操作和查询操作,其中以考察更新操作为重点,当然还有一个重点就是题目建模,需要找到其与线段树的关系,自己判断是否可能为线段树题目基本通过判断是否是很多次(1e5)更新,很多次(1e5)查询,暴力会超时这3个点进行判断,现在做的比赛题目很多基本都是知识点与知识点之间相互联系,需要很高的问题建模能力,有时候单一的一个知识点无法解决问题,需要进行知识点之间相互联系来解决问题。
收获2:spfa算法知识点。暑假集训之前,自己基本只会通过邻接矩阵记录边的知识,且最短路算法基本忘得差不多了。有时候,知识体系的循序渐进学习和向别人请教真的很有效,一开始自己不理解如何通过前向星算法来记录边的关系,在请教兴志学长和敏纳学长之后,逐渐开始理解了前向星算法,之后在做最短路题目的时候自己先学习了spfa算法(之前全忘记了),通过看啊哈算法可能因为之前学习过,很快便学会了,进而通过做vj上面张老师开的最短路专题开始练习,专题练习中感到很幸运自己先将spfa算法和前向星算法学习了一遍,其中有的题目邻接矩阵无法存储边的关系,有的题目存在负环,而Dijkstra算法正常情况下无法解决出现负环的情况,基本整个专题除了需要Floyd算法的题目其他题目通过spfa算法+前向星存储边的关系,顺畅通过。spfa算法可以求得一个点到其他各点的最短路径且可以通过入队次数或者入栈次数判断负环,我们往往可以通过队列或者栈来实现,通常情况下通过队列实现即可,但有时候通过栈实现会相对快一点(做到过一个题目队列实现TLE,栈实现AC),可是为什么?现在阐述一下自己对spfa算法的浅显理解,spfa算法通过dis数组记录出发点到其它点的距离,vis数组记录结点是否在队列中,先将出发点入队,每次试探队列头结点是否可以更新dist数组,若可以更新且更新的结点并未在队列中,就将更新的结点入队,判断负环时需要通过另一个数组记录结点入队次数,枚举一遍头结点的边的关系之后,再将头结点出队,进而枚举下一个结点,直到队列中无结点为止。
收获3:并查集算法知识点。暑假前自己虽然说已经学会并查集,通过假期刷专题训练,感觉自己的并查集知识提高了许多,并且浅显的学习了一下种类并查集,虽然刚才看了看感觉又忘了,但是学过一遍之后明显再去看比上一次看要清晰一点,对于自己而言,亦对于很多人而言,第一次学习之后就会因为逐渐遗忘(当然可以通过遗忘规律重复学习),自己之后的学习生活不应该总是怀疑自己为什么学习了就忘记了,而应该去思考如何加深之前学习的深度,不断地提高是面对遗忘困难的很好办法,逆流行舟,不进则退。
收获4:最小生成树算法知识点。暑假前最小生成树自己基本只会通过Kruskal算法实现,暑假的时候不仅重新学习了一遍Kruskal算法,而且又学习了一遍Prim算法(建议在深化一个方面知识点的时候可以通过一道简单的入门题不断地尝试不同的方法,进而不断的对比深化)。Kruskal算法思考:Kruskal算法即为并查集算法深化版,要连接n个结点,必定需要n-1条边,每次试探未试探的边中权值最小的边,若试探边所连接的两个结点并不在一个集合内(通过并查集查询连接),则选取试探边,并将试探边所连接的两个结点置于一个集合内,然后不断进行试探选取,直到选取n-1条边为止,此时得到的便是最小生成树。Prim算法思考:对于Dijkstra算法自己部分遗忘,因此当前不能直接下结论说Prim算法即为Dijkstra算法的深化版,但的确可以确地的是Prim算法与Dijkstra算法联系紧密,Prim算法中dist数组记录当前状态连接至出发点集合(通常默认出发点为最小点)的距离(边权),vis数组记录结点是否在集合内,从出发点(集合源点)开始,每次选取距离集合内未访问过的点中最近的点将其置于集合内,然后更新集合内结点数量和当前选取结点vis标记和其它点与集合的最短距离(边权),直到选取n个结点之后结束即可。

原创粉丝点击