混到尽头:我的ACM生涯

  2012年12月1日,我参加了我们学校的校赛,算是正式开始自己的ACM生涯,2014年12月7日,这一天也是我们学校校赛举办的日子,我在上海打铁退役,结束了整整两年的ACM生涯。


前言

两年的时间说长不长,说短不短,两年时间能做什么,对我而言基本是荒废的,唯一让我感觉欣慰的是加入了ACM队,能装出一副敲代码很厉害的模样。现在结束了,两场现场赛成绩虽不理想,却也比较客观的反映出我们队的水平。
这两年我学会了很多牛逼算法,也错过了很多学习牛逼算法的机会。世间事本就难料,我选择顺其自然,既可以说是天注定,也可以说是缘分。一条路的尽头不是结束,而是一个岔路口,总要做新的选择。

Sec.1

大一入学两个月的时候,一个当时大四的直系学长给我们班介绍了ACM,就是当时ACM队队长倪裕芳。我第一次听说这个东西,那时我还带着高中时稚嫩的想法,想通过比赛证明自己很强,听说校赛拿银奖以上就可以直接入ACM队,并且大一单独评奖,这么一看发现机会很大。抱着一定要入队的心态,我开始了可能是我大学中最努力的半个多月。

首先是选择要学习的语言,比赛可以用的是C、C++、Pascal、JAVA(事实上我们学校的OJ不能用pascal交),我也不知道学什么,百度了很久,最终决定学C语言,现在也记不清当初为什么选C。
网购了谭浩强的C语言书,下载了郝斌的C语言视频,使用视频+书籍同步学习的方式,搞了一个月,不能用电脑的时候看书,能用电脑的时候看视频,每晚都看到电脑没电再关机。但是这样又看书又看视频重复度有点高,学起来也慢,再加上我不做书后的题,半个月下来,不但没学完,做网络预赛都相当吃力。视频中说指针是C语言最关键的一部分,不过我已经没时间看了,而且书后的习题也没做过,OJ上只刷了十多道题而已。就这样,我去参加了校赛。

上午的热身赛,要参赛的几个室友都在睡觉,我早早爬起来去了,因为我很紧张,怕不能入队,先去熟悉一下环境。但是热身赛结束反而打击了我的自信心。下午的比赛,我做出来两道题,虽然总共多加了11发罚时,但还是靠罚时的优势拿了银奖。我刚看了一下当时的榜,我一个多小时的时候出了C题,一发罚时,C是个排序题,我还记得那个排序是我比赛时临时想出来的,因为我之前做题很少,也没接触过排序算法,如果不是当时机智,可能这两年的路就会有所不同了。我想到的排序算法是选择排序,之前并没有接触过这个算法,很巧,我自己想到的,是一个已经发明的算法。所以我一直对选择排序算法情有独钟,当然了一般考虑到时间复杂度我很少用它。另一题是一个水题,我三个多小时的时候过的,十发罚时。比赛其余的时间我都在做什么?我记得我是在刷榜,随时看自己排在多少名,看看自己认识的人排在多少名。
靠着校赛的银奖,抱着一定要在竞赛中拿奖的心态,我进入了集训队。

一开始的热情很高,这不难理解。新接触加上不停做水题不停AC提高自信心。然后大一一整年就在水题中度过了。暑假给了一个很简单的目标:POJ100道。那时候我学车,没到我练的时候就拿着刘汝佳的白书在阴凉处看,但是没法敲代码的确蛋疼,就只好每天回去把遇到的问题亲手敲一敲。可是没坚持多久就放弃了。刘汝佳的白书也只停留在100页左右没有继续往下看。那本书如果彻底看完并且搞明白了,CF上div1肯定没问题。
眼看着暑假快结束了,我的POJ离100道还远的很,我找了一个poj题目总结,对着水题刷,觉得自己会的题目,为了省时间直接在网上找代码粘贴,这也为之后埋下了苦果。
我很长一段时间就是每周做周赛,赛后不AK,平时不做题,所以刷题量一直就不高。直到我大二时的校赛。那回并没有强制我们参赛,但我还是参加了,因为同届几大高手都没参加,我觉得我能好好发挥一番。还好参加了,才能给我打击,让我及时醒悟。
比赛异常惨烈,结束后,我是个银奖。大学参加了两回校赛,都是银奖。
那回是我两年ACM生涯的最低谷。

Sec.2

大二上学期,组了一次队,我和好朋友李讴邑、做队友时间最久的张文豪一队,那时是自己组的,这个队伍效果不理想。大二下学期,今年3月份的时候,重新组队了,唯一没变的是最强阵吴琦他们队。我还是和张文豪(土豪)一队,另外,李讴邑换成了95后的聂嘉贺(白尼玛)。
纸面上看,我们应该是三队,实力上看也是三队。不出意外的话,我们学校能参加现场赛的也就三支队(结果今年有六支)。
起初我是不开心的,因为我知道自己的实力不只是三队而已。不过慢慢就接受了,因为我想要当真大腿。
那时离现场赛还有半年,我们盘算着要赶紧学,我也不知道应该每个人分知识点学还是每个人都学全部知识点。两个队友的意思是前者,我的意思是后者,前者可以减轻每个人的压力,后者可以在比赛时更加保险。我建议他们学全部知识点,我也打算这么做。不过到了9月份,我发现我们三个自然而然的变成了每人分配了几个专属的知识点。而且我们队是四支训练队里唯一一支每个人都有自己负责部分的队伍。这样的后果就是,比赛时遇到一个算法题,一个人想不出来了,另外两人都不知道怎么帮他。

大二的暑假是我们成长最快的阶段,甚至两个月所学比过去一年半所学的知识还多。不过效率高的也只有前期,中期开始,我每天睡懒觉到中午才去实验室,晚上踢FIFA、打CS,真正学习的时间只有下午而已,逗比往事不多提。
一个暑假过后,确定了两件事,一件是我们每人确定了各自的板块,刚才也说了,这也是自然而然就演变成了这样。我负责水题、图论和数据结构,白尼玛负责DP和贪心,土豪负责数论、几何和博弈。形成这个情况完全是我们一个暑假配合下来的结果,所谓配合就是拿到一道自己负责的题目,对队友说“我来想,你们先看别的”。真的,我们虽然每个人都有负责几个模块,但这么做缺点就是很难三个人一起想一个问题,可以提供一些相关技术支持,但大体的解决思路很难帮上忙,因为每个人除了自己负责的模块别的就几乎不会了,我是说在现场赛算法题的难度下不会。
另一件事是我有幸成为了主敲手。其实确定主敲手对我们三个来说也不太难。土豪手速太慢直接被pass,小白代码风格比较丑,加之暑假比赛的时候,拿到一道水题,我们交流完题意后,我都会自告奋勇敲题,时间长了我就成为了主敲手。这样导致了一个结果就是,土豪每次都很少敲题,时间长了,代码敲的更慢了,白尼玛同样,时间长了代码风格还是那么丑。所以我必须感谢两个队友,让我在退役前一直都有比较快的手速。

Sec.3

参加了两场现场赛,西安三题拿铜,上海爆零打铁。
去上海的前几天,有个晚上失眠了,就把这两年的种种回忆了一番,在这里就不一一写了,看上去会很无聊。
我有一个感觉,任何时候站在一个时间点上,回顾一路过来的经历,都会觉得一切很奇妙,恐怕是因为我这个没有追求没有作为的家伙一直喜欢顺其自然的结果。
在西安,我们是86名,86名也是铜,120名也是铜,其实铜的含金量很低。我也不想仅仅超过那55%的人,我知道我不是傻瓜,只要我努力我可以做的更好。但是剩下45%的人又何尝不是怎么想,我不得不承认我很弱,高中生都有很多能虐我。其实拿了铜之后,我并没有一开始入队时想象的那种,为了拿奖努力,最后收到回报的感觉。两年过来,越到后面我反而觉得拿奖不是那么重要了。我知道我们队有实力拿铜,但这不再是我的目标(不要想多,拿银拿金也不是),我只想给自己这两年厮混的时光一个交代,不管我成绩怎么样,最后的结果就是我两年的成果。
简单的说,我的故事是这样:从一开始就一路被虐,被虐超鬼之后参加了两场现场赛,然后结束ACM生涯。
我不是能智商碾压对手的人,也不是能没日没夜的靠后天努力超越天才的人。我没有先天优势,没有后天勤奋,一路上遭到不少冷嘲热讽,但我现在还是站着面对这一个岔路口。一条路的尽头不是结束,而是一个岔路口,总要做新的选择。

2014.12.22

文 / altair21
LEAVE A REPLY

loading