一个月的时间飞快地过去了,在实验中心的小学期实训也进入了尾声了。回首这一个月时光,自己在OJ上收获了许多平时都无法获取的新东西。最开始刚进来的时候,自己只是抱着对这学期学的数据结构学得不好,来补补拉下的知识的想法,后来,自己已经开始愿意掌握更多与ACM有关的知识了,这大概是编程的魅力吧!
其实一个月说长不长,说短不短。每天的不断做题的过程中,遇到的问题可以说是各种各样,有时自己几乎是对问题无从下手。这可能是由于自己的基础并不是很好吧,在大一上学期的C语言学习中,我就不是很感兴趣,所以自己就学的很浅显,而下学期的数据结构又要难度加大一些,所以自己更是感到自己不适合学这个专业了。因此,我选择ACM小学期实训来提高自己的编程基本功。从最开始的A+B的问题到后面的各种各样的题型,让自己真正对ACM其中所蕴含的知识有了具体的认识与接触。其中牵涉到了C/C++基本语法,数据结构,离散数学,数论,图论,搜索等众多知识。ACM真的是一个锻炼人的逻辑思维分析能力和自我学习能力的好平台,因为上面很多东西都得靠自己学习,老师上课讲得那些东西只能其基础的作用,因此,为了能够在ACM这条路上走得更远,需要自己不断在做题中学习知识,在学习知识中做题,这两者是相辅相成的,缺一不可。
当自己亲身开始训练的时候,才能体会到那种A题的快乐。我以前就是对于OJ上面的题目,尽量挑简单地做,因为当时自己确实实力一般,做难题不会,做中档题,懂一点点却没办法实现,只有简单题能够和自己的能力相一致,虽然说最开始做的都是简单题,但是并不是说什么问题都没有碰到。比如自己曾经就对链表的简单操作都很畏惧,对涉及到数学知识的题基本是放弃的做法。因为自己的数学就学的不是很好,再一看到那些需要运用到数学知识的题目,就基本上跳过了。慢慢地,自己的这种行为让我感到这样下去,根本就不能提高自己的编程基本功。因为,如果不敢去对难题下手,对自己来说是死穴的题下手,就会导致一个恶性循环,永远不能战胜苦难,是不能成为一个优秀的程序员的。一开始的训练中,每天下午都会在OJ上有个比赛,这个比赛考查的是每个人对C语言的基本语法掌握和对算法的理解与运用。我一开始做的感觉还不是很糟,因为其中很多题目都是自己之前做过了,我是从5月中旬才开始A题的,到进入ACM集训队时,可能一共做了一百七八左右的水题吧。但是,慢慢地后面的题目有些是自己之前从未尝试过的,因此在后面的比赛中自己的成绩都很不理想。为了改变这种情况,自己买了一本《算法与艺术竞赛入门经典》,这本被成为ACMer必读的书确实很好,但自己真正开始阅读的时候,才发现这本书适合那些已经具备很高起点的ACMer,自己并不适合 ,于是我又去买了《离散数学》,买这本书是因为我在网上查了很多的资料,离散数学很多知识都能够在A题中发挥作用,而我们学校没有开这门课,所以自己就去买了。现在看了一部分的东西,里面的内容确实很抽象,很难理解。不过,我相信,今天的厚度决定明天的高度。只有经过大量的知识积累,才能做到对题目的真正理解。