通过半个学期对ACM的学习,使我对程序有了很深的理解,回想一下学到了很多平常上课学不到的东西,锻炼了我的思维能力,很多思想不仅对解题有用,对于平常的生活也有很多用处。刚开始接触ACM的时候,感觉知识都很深奥,理解起来都要花费很大的力气,但内心依然坚持,享受花费力气解出题目,解决许多麻烦后让程序ac的快感。
通过ACM的训练对自己的本身带来了很多好处,首先,自己的编程能力得到了大幅度的提升,ACM比赛注重短时间内写出正确的代码,这锻炼了我们在短时间内想出最优,最正确的办法来解决问题,锻炼了我们的思考问题的能力,提高了大脑的思维活跃能力,还可以说丰富了我们的想象力。其次,我们的算法能力得到了很好的锻炼,学到了课程内没有学到的知识,拓展了自己的知识面。在以前的教科书里,算法是计算机学科的核心,虽然现在淡化了这种观念,但基本的算法学习是必不可少的,简便的算法可以是我们用最少的时间,占用最少的空间来解决一个问题,同时拥有一个扎实的基本功才能更深入的更快的学习高层的知识,不管做哪一行,具备扎实的基本功是必不可缺的,算法和数学的功底是计算机研究必备的条件。ACM的比赛中还强化了我们的团队配合能力,如何在团队中发挥自己最大的贡献,提高配合效率都可以通过ACM比赛来学习。
学习ACM还有一个很重要的好处,它可以影响到自己未来的发展。ACM竞赛是具有权威性的,它可以选拔出计算机界高质量的人才,为世界各大IT公司提供新鲜血液。很多公司对ACM都非常的支持,同时很多大公司也推出各种竞赛,并通过高额奖金吸引人才。学好ACM,并通过竞赛来证明自己的实力,得到大公司的青睐是一名ACMer的梦想。
ACM好处多多,但学习ACM也是需要付出的,ACM需要长时间的积累,想要得到好成绩需要花费大学里大量的空闲时间,要想拥有坚实的基础需要用大量的题目来夯实自己的基础,提高自己的思维,判断,逻辑等能力。老师说过的ACM成功秘诀:强烈的兴趣+睿智的思想+不懈的努力。
半个学期对ACM的学习总结主要学习了一下几个方面:
1、 STL简单应用。
2、 递归递推算法。
3、 动态规划算法。
4、 背包基础。
5、 贪心算法。
6、 二分三分法。
7、 搜索算法。
8、 数据结构。
9、 最短路径问题。
<一>第一课学习的是STL的简单应用,STL就是标准模版库,包含了一些简单函数,有向量(vector) 队列(queue) 堆栈(stack) 集合(set)等:
1)、栈:一种先进后出的数组结构,它有一个出口,只能操作最顶端的元素。empty() 表示栈内是否为空; size()返回栈内元素个数;top() 返回栈顶元素值; pop() 移除栈顶元素; push() 像栈压入一个元素。
2)、队列:一种先进先出的数据结构,从底端加入元素,从顶端取出元素。 empty() ;size();pront() 返回队列内下一个元素; back() 返回对内最后一个元素; pop() ;push()。
3)、动态数组:empty() ; size() ;push_back() 将元素插入最尾端; pop_back() 将最尾端元素删除; v[i] 类似数组取第i位置的元素。
4)、sort: 排序,默认从小到大排序;sort(begin,end,cmp)。可以通过自定义,改变排列规则。
5)、upper_bound、lower_bound:upper_bound(begin,end,value) 返回