ACM暑期训练总结

                一眨眼ACM暑期训练就要结束了,还真有点不舍得。有许多感想许多收获,一个月的训练也让我深刻体会到了ACM的乐趣与自己的不足。这次训练主要分为3个阶段。

          第一阶段主要是起步,在费老师的安排下我们在这一阶段主要练习了搜索与图论算法,这并不属于新知识,但因为代码长度比较长,对于我来说是一种基础的训练,从初期代码错误连篇,小错误不断到后来还算勉强,到对最短路径和搜索也算是比较熟练了。回想搜索,就是一种纯暴力的方法,重要的还是分析清楚题意,找到正确的搜索方法路径,至于最短路径和最小生成树,这类题好像都比较明显,都会涉及到路径与权值的题意,最短路径的主要算法(弗洛伊德,迪杰特拉斯,福特)主要都与路径寻找时找过渡点,像迪杰特拉斯算法,就是要找到一点到其他所有点距离最小的下一个点,在意新找到的点作为桥梁更新数组的结果。还有最小生成树也就是和迪杰特拉斯算法一个思想,只是最小生成树还强调一个所有点全部连通的问题。

         第二阶段主要是过渡,我们也是在这一阶段即复习了旧知识,也开始了新学习。二分法是做的所有题中出现频率比较高的方法,因为复杂度可以降到log2 n的关系,是一种非常好用的方法,而关键在于是找到问题中的单调关系,进行定位。而做题时总要对单调关系特别的留意,尤其是与求解结果有关的变量。二分法+什么什么是一种题目常见的模式。单调队列是这次集训接触到的第一个新知识点,主要利用了单调栈内只存储具有单调关系的元素,否则弹出栈顶元素直到符合要求,解决的问题都对从数组开始到结束要单调有一定要求,就像可把各种问题抽象成不同身高的人排好队,然后求其中的各种问题。我一直感觉自己在这一块的练习还不够,需要抽空多看看博客,补补题。(其实我觉得单调栈的方法应用并不多,可能是看的博客和做的题太少的缘故吧)。

         第三阶段主要就是新学习,这一阶段我们主要学习了树状数组,这个东西可真是让我长了见识,心里真是佩服发明树状数组的人,在对lowbit()和c[]数组的原理进行测试理解后,真是服了。利用树状数组将数按照类似于一种二分的方式存储,进而完成求和与计数的快速运算。而树状数组的题对我来说现在感觉仍然是挺困难的,对于我这种小菜鸟总要花许多脑细胞才能勉强A一道题。树状数组与线段树也是我开学时间附近最需要学习深化的知识点。

       另外,谈谈几次训练赛和ccpc的感想。1,我是个菜鸟。2,我真的是个菜鸟。

       新的学期,除了跟进费老师的要求,尽可能的扎实练好树状数组,线段树,然后自己在训练之余狂练dp(感觉dp这的太重要,像状压dp,树状dp,都没怎么接触,不能比赛一遇到难点的dp就完蛋)。然后一定要开始看数学的博客与资料了,数次比赛告诉我,这个东西真的很重要,完全不亚于dp。

      在暑期训练中,我也发现先看博客,学习资料在练题这种方法很适合我。我的性子比较慢,之前一个学期因为学习不够充分就着急做了题,题解是没少看,进步也就几乎没有了。先看过博客,各类基本方法都见识了,知识点掌握清了后在练题就跟容易脱离题解,完全自己A的题ac的一瞬间真的很爽。

      虽然是个菜鸟,但我庆幸我找到了一个我真正喜欢的活动。我也相信付出会有收获,我们还要走的更远,更加努力。

       


你可能感兴趣的:(ACM暑期训练总结)