作为一个很久没有参加过训练赛的老油条,这应该是咕了很久的退役总结
眼看学期快过半却迟迟没有开学的意思,原本还想上半年打完最后一场比赛,但现在看来可能无法实现。
在连续几周的笔试面试之后,准备的过程,与面试官交流的过程中都学到了很多,同时我也成为了一个有实习offer的人。虽然还不知道该做出怎样的选择,也不知道未来的路是不是顺利的,但我知道只用考虑这道题怎么解的时期已经结束,我将面临新的挑战。
退役。既是告别,也是启程
1
你为什么要参加ACM?
这个问题总是有无数的回答,面试官问我的时候我会笑嘻嘻的说just for fun
作为一个零基础的小白,我并没有什么信心。“高薪就业,报送名校”,这种话总是很吸引人,可看到这个难度,我觉得我做不了。所以一开始我是被舍友怂恿加入到acm俱乐部,遗憾的是,他们并没有坚持下去。在寒假集训的日子里,上课也听不懂,自己做也不会,训练赛还天天倒数。别人两三下做出来的题目,我要想很久。“我应该迟早会被刷下去的”
但是一天天的,102机房的人越来越少,虽然训练赛的名次依然倒数,但是正着数下去,好像我一直在进步。反正也能学到东西,那我就死赖着不走,等到被劝退那天再说吧。即使回到家里,我也没有错过一场训练赛。我是这么跟我爸妈介绍的:这种比赛有四种等级,金银铜铁,我现在的水平就是常年铁牌。但总有突然开窍的时候,排行榜显示的名次是铜牌,我会为此高兴上半天。
我也一直在想,为什么他们总是做得很好,而我该怎么努力呢?
然后写了第一篇博客,一开始都是动态规划,在那个时候我的眼里只有模拟,贪心,搜索,找规律,动态规划,动态规划应该是最难的,如果我把见过的所有动态规划的方程背下来,那我应该会变得很厉害。然后每次比赛先在纸上写
模拟,贪心,搜索,找规律,动态规划,遇到题目一个个对着看
然鹅事实上,动态规划总是有各种各样的转移方程,也总有模拟贪心解决不了的题目
就这样迷迷糊糊成为了一个acmer,我想变得厉害,成为我想要成为的样子
2
每天敲敲代码,学习新的算法,看上去也充满了乐趣
但是acm是比赛,比赛是残酷的
最开始组队的队友是浩哥和老张,都是一开始零基础的,但他们的表现显然比我要好多了,同时他们应该算是实验室话最多的几个之一。
在组队之后我才知道之前的单打独斗是多么虚度年华。也算是入门了小半年,我连复杂度都算不清楚,只能做出基本的题目。只会记住之前的题目是不够的,面对一道题,如果我实在不熟悉,我根本没有自信,但是老张会去思考,会尽量去想解决这个问题的方法。浩哥当时自称“dp之王”,虽然有些吹牛的成分,训练赛时候的动态规划题也能想到状态转移方程。后来老张去了正式队,我和浩哥还有lg组成了新队伍。
省赛的时候虽然是友情队,但有参加比赛的机会我也很高兴。比赛的时候我过了一道假题,一道没有数据的假题,通过之后我还高兴了半天,我似乎真的变得很厉害了。
但是赛后知道我的那种过于暴力的做法本不应该通过这道题,信心很受打击,看到有些正式队因为这道题没有拿到很好的名次,而我这个根本不会这道题,根本不会算复杂度的人做出了这道题,我很难过。虽然我不是正式队,但其他学校的队伍肯定有很多不理解这道题的人ac了。努力不够实力不够的人却拿到了很好的名次,这不是很残酷吗?
看到回去的车上他们失落的表情,我不知道这个时候该有怎样的心情,是高兴我拿到了一个假银,还是为我这道题感到羞耻。我还是没有变得厉害。
下半年区域赛,和浩哥,lxq大佬组队。dalao的称号不是白叫的,思维能力和代码能力非常好。在一个暑假的努力之后,我们侥幸拿到了区域赛的名额。
在徐州区域赛,我才知道现场和平时训练完全不一样。看到题册每道题都巨长无比,我感到非常迷茫。周围一圈,一个小时都没有看到一个气球,排行榜上过A题的人越来越多,但是这题目老长老长的,这该怎么写啊。在读题了两个小时之后,我们才看出这是一道裸题,然后我们通过了唯一一道题,拿到了铜牌。虽然拿到牌子是我们的梦想,但是做一道题就拿牌,让我仿佛重现了省赛之后的感觉。我应该并没有实力在大二就拿牌。比赛的残酷,为什么总让我这个半吊子享受好的结果。
可能因为徐州区域赛表现得还好?然后我们拿到北京区域赛的资格。我想凭借自己的实力拿到牌子。北京区域赛的题目很好,但是我们却做得不好。首先在签到题上,因为想着是签到题,dalao应该会做出来。而我们想着每个人多看点题,简单题就让一个人敲了。在看到题目之后,我的反应是一个很简单的拓扑排序,没有任何交流,dalao就去敲这个题,而我和浩哥就去看其他题了。听着键盘啪啪响,就这样过去了很久,她那到题做不出,而我其他题想不出,因为之前曾经说过不要在别人敲题的时候影响思路,然后我根本不敢说我的想法。一个小时之后等dalao主动问的时候,我才知道她想复杂了,说出我的想法之后,一个本该很早做出的题目拖了很久。
后面我还被一道简单的二进制划分卡了,但是还窃喜发现了假规律。另外一道模拟题dalao在做,最后也没做出来。后来我一直在想,如果当时我们看一下对方的题目,是不是有不同的结果。现场比赛就是平时训练的反映,平时训练的时候我总是抱队友大腿,难有自己的想法。说着自己要负责图论,但其实只会套板子,也不会背后的原理。可能正是平时训练的懈怠,让我们第一个打铁。
打铁的感受是刻骨铭心的,我希望去弥补遗憾,我要更加努力才行。
但事实上,我并没有做得很好,对于我这个每天都在虚假的努力,没有完全投入训练的人,遗憾总是越来越多
3
如果要问我最印象深刻,影响最大的时期,我觉得应该是大二后的那个暑假,备战2019区域赛的时候。我和徐队,dalao组队。这段时间其实很难受,训练赛的时候总是不顺利。
我的队友很强,而我总是拖后腿
与往常一样,我还是负责图论,可是每次图论的思路基本都是队友提供,而我总是一个无情的板子机器。遇到稍微有思维量的题目,我很难想到,当每次被队友催促“你倒是想一想”,我总是不在状态,根本找不出问题出现在哪里,可能我就是菜吧。cf也不常打,训练也不认真,只会板子题,只会不断的犯错。徐队可以手敲好几个线段树,主席树,自动机,而我只会套板子,读题也总是出错。总之我变得像是小白一样,困难与打击让我总想逃避,但我很讨厌这样做得不好的自己。
训练赛成绩是跟最后区域赛的名额挂钩的,不顺利的时候伤心的不只是我,还有队友。有些时候也总会说一些抱怨的话,我深知自己做得不够好甚至拖累了队友,在伤心难受的时候甚至差点哭了出来。但是他们很好,总是能包容我的错误,总是会鼓励我继续努力下去。
“没关系的,多补点题吧”
为了能够更好的训练,国庆的时候我大姐结婚,刚开始我还一时脑热说不去了,怕辜负了队友。后来被家里人狂骂,被实验室里的人笑话和不解,我也马上意识到我的错误,乖乖买了去辽宁的机票。见到了几乎一年没见的家人。
在我姐婚礼的时候,我哭得挺厉害的,因为我的冷漠和不关心,伤害了家里的人。
遗憾总是会越来越多,想尽力去弥补,可能不经意间伤害了很多人。我在后悔,两年的时间,我到底学到了什么,如果平时再努力思考一会,再认真一点,也不至于现在的样子。
我的最后一场区域赛,还是在徐州
虽然之前一直在说要避免平时训练赛的错误,但是一开始我们把平时的错误犯了个遍,艰难地签到了三个题。最后一个题,到最后半个小时才知道要敲一个两面长的大数质因数分解的板子。然后dalao敲着模板,我们一行行地对比,最后徐队改了一会,在最后9分钟交了这个题,返回ac
我们拿到了一直想要的银牌,虽然是银牌榜的倒数
4
我的流水账记完了
如果说我最有成就感的事情是作为acmer参加比赛,我最遗憾的事情也是在参加acm期间并没有做得很好。希望能带着这些遗憾,继续努力。
感谢你们看完了我无聊的流水账,下面我想写点建议
- 训练赛的时候一定要诚实训练,认真投入,好好补题
- 对可以作为模板的算法一定要理解清楚,对于常用的一定要学会不看模板手敲,只有真正理解算法,才能立于不败之地
- 多刷点cf,坚持下去一段时间肯定有长进
- 变量名和函数名取得好看一点
- 带过去的模板一定是敲过验证过的
- 上课好好听讲,基础也是很重要的,c with stl 是不够的
推荐书目:
- 算法竞赛进阶指南:出现在里面的代码一定要理解,很常用,例题要做
- 算法导论:虽然很厚一本,但讲得很详细,循环不变式方法的证明要会
找实习的建议:别等待 don’t wait
5
感谢张学辉老师
感谢和我一起打过比赛的队友
感谢实验室的小伙伴
感谢所有因为acm而相识的朋友
希望今后:
保持善良,不要忘记努力,不要辜负自己
2020.4.19