本文主要是介绍没有什么不可能—记山东省第六届ACM程序设计竞赛(退役总结帖),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
大一下学期,第一次听说了ACM这个词,当时每周六也开设了培训课,但我好像一次也没有去过,当时对这个词并没有什么太大的印象。后来学院里引进了自己的OJ,那时候我连基本的输入输出格式都不懂,当经历了一堆的WA,TLE之后突然换来的一个AC竟带来了莫名的喜悦。后来学院举办了第一届ACM程序设计竞赛,我报名参加了新秀赛和团队赛。三个小时的新秀赛,当时貌似做出了三道,意外的拿到了一等奖,这也成为了我大学生活的一个重要转折点。四个小时的团队赛,做得很艰难,各种不会,最后只做出了一道,排在三等奖的末尾。比赛之后,我和班里的张帅(ZS,后来组队两年多的神话队友)加入了学院的ACM集训队。经过查资料和老师的讲解,我才知道这个竞赛是个高水平的程序设计竞赛,影响力特别大。当时老师问我,“比完赛以后准备放弃吗?”,我的回答是“不会”。就这样,我的大学ACM生涯就正式开始了。
当时集训队里学长学姐们在准备第四届山东省ACM竞赛,他们讲题的时候我们新成员也会去听,但是听得是一头雾水,问我们哪里不懂,貌似当时谁也没敢说话,在那不懂装懂,感觉自己的水平真的是太低了。后来也跟着他们一起做题(虽然做起来很艰难)。当有一天老师告诉我说让我作为观光队去参加省赛,当时第一感觉不是兴奋,而是没底,怀疑自己的能力。就这样,我和ZS和杨英明(YYM)组成了一个队伍(MOVE ON),一开始三个人在一块合作有些尴尬,毕竟不太熟,后来经历了几场练习赛和平时的相处,三个人就打成一片了。
第四届山东省ACM竞赛,是我第一次去别的学校(中国石油大学(华东))参加比赛,很兴奋。到了那里看到山东省的学校所派的所有队伍,满满的人,宽阔的场地,整齐的电脑,墙上挂满了气球,这样的场面我还是第一次看到,参赛的这两天里,有太多的第一次,新奇又开了眼界。参赛的第二天是五个小时的正式比赛,我们队就做出了一道题(第一题计算几何),看着周围强队的气球一个个升起来,感到了自己与其他院校学生的差距。值得高兴的是,学长学姐们最终拿到了一块铜牌(集训队得到的第一块牌)。从青岛回来以后,想了很多,除了见世面之外更多的是思考,为什么那些题目别人能做出来,自己却做不出来,二本学校的学生就真的不如那些一本院校吗?就这样,我坚定了走ACM这条道路的决心!
老师对我们说,今年你们是星队,明年你们就是主力。接下来就是一年的训练,现在回想起来感觉训练的很糟糕,大二上学期过去以后,发现自己并没有学到什么东西,没有系统的训练,过的很糊涂。大二下学期距离省赛还有两个多月,老师要求我们平时没课必须到实验室里来训练,从那时候好像才开始真正的训练。感觉做了很多题目,也发了很多的解题报告,在省赛到来之际竟产生莫名的自信。然而,现实又狠狠地抽了自己一鞭子。2014山东省第五届ACM程序设计竞赛,我们队名是Miracle,到那以后就是比赛前的全程兴奋,就在赛前的几天我还对队友说这次最少能得个铜牌吧。到了正式比赛的时候,首先YM做出了一道水题(求10以内的阶层),然后YM和ZS一块做关于一个树的简单题,经历了一次WA以后换来了AC。当时感觉开局还不错,也很有信心。然而,从那开始就陷入了卡题状态,A题是一个数学积分题,我和YM一起做了很久,心情也变得越来越浮躁,还好最后终于做出来了,信心又一次产生。然而,我们又陷入了卡题状态,离比赛结束一个多小时的时候,我们好像在铜牌的倒数第几名,后来就封榜了。最后我们把目光聚集在了最后一题上,这个题大一的星队都做出来了,我想我们也应该能做出来吧。三个人想了很久。。。依然没有思路。我记得我自己当时的状态完全是大脑掏空似的一片空白,也不知道想什么,就是很木然的坐在那。就这样,我们到比赛结束也没做出那道题。走出赛场,心情很沉重,之前的兴奋劲早已烟消云散,不知道最后一个小时铜牌能不能保住(也知道很悬),天空下着小雨,我们队伍走在外面,心情很复杂,一块照相也没有精神。后来结果出来了,我们没拿到牌,排在铜牌后的第三位,同校的大二另一个队也很遗憾的排在铜牌后的第二位。不过值得高兴的是,学长学姐们做出了五道题,再一次拿到了铜牌。就这样结束了第五届省赛。
回来以后,心情很沮丧,老师说了很多安慰我们的话,但这次比赛的结果实在是令自己,令老师们失望。几天以后,实验室举办了“我想要那块牌”活动,每个人都说了自己的想法,感到精神上受到了鼓舞,也觉得自己是那么幸运能够加入学院集训队,认识那么好的老师和同学,在这里,我真的感到很开心,喜欢融洽的氛围,喜欢一起努力的感觉。后来,实验室做了调整,学长学姐们和几位大三的队友离开了实验室,我,ZS,YYM,XH选择了留下,准备再战一年。
14年的暑假,我们留在学校集训,那段时间过得很充实,也训练了不少题目。大三上学期开始后,首先迎来的是五场区域赛网络资格赛,题目很难,结果是一场比赛也没有得到出线资格。上学期,我的打算是一心学习算法,保持ACM的训练,然而现实却总不是那么一帆风顺。大三也快就业了,身边的同学都搞起了技术方面的东西,做东西,这是很大的一个诱惑,觉得他们都很厉害,能做出那么好的东西,而自己却什么技术也没学。有一段时间我也开始怀疑自己的决定是不是正确,后来和北航的一位学长聊天,跟他说我的疑惑,他说他也曾经过这样的阶段,聊了很多,最后我没有改变继续搞ACM的决心,继续坚持下去。快到了年底,有一件意想不到的大事发生了。现阶段实验室大三的有我们四个,怎么组队是个问题,有一天老师把我们聚到一块,商量组队的问题,而问题的核心就聚焦在了我们队的YM是选择继续和我,ZS组队,还是选择和XH组队,当时气氛很沉重,也看得出YM很纠结,我的想法是不分开,毕竟队伍也建立了一年多,也共同经历了很多事,明年还要一块去“雪耻”。不过,后来YM还是选择了分开……开完会后心里很不是滋味,和队友ZS聊了很多,ZS的想法是分不分都可以,关键是该开始系统的训练了,要不然,明年还是没戏。后来我也想开了,无论怎样,终不能忘了前进的脚步。几天之后,大二的万延鹏(WYP)加入了我们的队伍。眼看着就到了寒假,不能留校训练,老师让我们每队制定出自己的训练计划,我和ZS,WYP商量该怎么训练,纠结之处是是否把专题分开分给每一个人,其实这也是一直以来实验室训练的一个问题。后来也请教了网上的大牛,建议我们还是每个人每个方面都过一遍基础,然后个人有针对性得侧重一些专题。就这样,我们制定了整个寒假的训练计划,前期出的专题都做,后期就按照虚拟OJ上大牛出的专题个人挑着专题做,尽量每个人都做一遍。事实证明,前期的效果不理想,而后期的效果则很明显,做一个专题就要做大量的习题,一定要搞懂,学会灵活运用,在做了近20道线段树题目后,自己终于感受到了线段树的强大之处,也明白了该怎样去运用线段树,其中最直观的一个体现就是敲线段树的题目再也不需要模板了,直接按照思路敲代码,后来找到14年省赛拿到线段树的题目,当时没敢敲,这次终于把那道题很做出来了,能感觉到自己真的进步了。平常有比赛,我们三个就在群里交流一块做题,最晚的是Codeforces,熬到两三点……一个寒假之后,觉得收获了特别多。
到了大三下学期,距离省赛还有两个月。我们陆续把上一届省赛的题目能做的都做出来了,发现我们当时的知识面实在是太少了,不懂概率DP,不懂高斯消元,不会灵活运用线段树等等……大三这一年,是我ACM知识收获最多的一年。15年第六届ACM程序设计竞赛报名,Alice队诞生了!队名是ZS起的,中文名爱丽丝听着有点像女队…不过也无所谓了。临近省赛的那段时间,我们实验室进行了很多场比赛,我们队配合的还不错,成绩也比较理想,WYP虽然是大二的,但思路敏捷,很聪明。然而省赛前的最后两场模拟赛,我们队却发挥的一场比一场差,第二场竟然排在了倒数。原本的自信就被削去了一半,最后一场赛后我很郁闷,感觉老天像在开玩笑似的,自己一个人到海边呆了很久。后来ZS跟我说,你这队长,得带起气氛来啊!说实话,我真的不是那种容易带动气氛,很快就能打鸡血的人。我问他现在什么感受,他说无所谓,结果真的不在乎了,之前经历了那么失败,已经没有什么大不了的了。我很佩服他,觉得很有道理,之前失败了那么多,这一次就不要再担心失败了,还不如调整好自己的心态,正常发挥,结果就随它去吧。老师一直给我们大三的强调心态问题,我也清楚,心态决定成败,几天后的省赛,拼的就是心态问题。
2015年5月9日,我们一大早来到了学校大门和老师会和,望着不远处的大海,感到整个人很开阔,也不知道明天会是怎么样的一个结果,再回到这里时会有怎样的心情。中午,我们队伍到达了青岛的山东科技大学。下午两个小时的热身赛,看到了一个“貌似”很简单的题目,就是求1+2+….+N的和,看了数据范围用了long long,交了一发,最不想看到的事情还是发生了,返回了一个WA(赛前我们就说,第一题一定要谨慎,否则第一发返回个WA太打击人了)。后来改成了判断N的奇偶再用公式,心想这下没问题了吧,提交,又返回一个WA,天哪,怎么回事……后来又把long long 改成了unsigned long long,交了以后终于AC了,数据范围一定要注意。接下来WYP做那个规律题,记录1出现的位置,写完以后交了,返回YES,漂亮!接下来ZS做拿到母函数的题目,有些卡题了,看得出ZS也有些紧张,一个劲儿的喝水,后来敲完了,交了一发,返回YES,哇的一声叫了起来!出了三题,看了看榜,排在银牌区。接下来两道题目都是模拟,我们就没有再做,而是熟悉下比赛环境,试了试JAVA。晚上和山东科技大学的老同学吃了顿饭,回到酒店的时候快8点了。我把我们队聚在一块,共同商量明天的对策。总结出了几点:1.前期就做水题,不要去做那些难题,紧跟着榜走。2.一个题目尽量两个人一起来做,第一个题一定要两个人。(这一条在现场赛时起了很大的作用)3.不能急躁,不能说垂头丧气的话,感到心烦意乱就去外面走走,不要影响整个队伍(这条也很重要)。4.加油。那天晚上,我大概快12点的时候睡着的,对于明天的比赛,不是忐忑,而是满满的期待。
第二天正式赛开始了!开始前电脑设了密码进不去,没办法先敲头文件,等到发下试题后,还在等着怎么还不公布开机密码,WYP提醒我说别的队都开始敲代码了,怎么回事,开机密码在哪?突然看到了文件袋里面的纸条上有开机密码……看题还是按照惯例来看。我先负责敲头文件,敲头文件的时候WYP告诉我说,A可以敲,但有个问题,先想想,等我敲完头文件,这时候看了看榜,A已经有人过了,于是WYP去敲A,我快速看了看题意,是个简单题,按给出的身高排序就可以了,然后我看WYP敲A题,问他问题在哪,他说如果身高相同怎么办,是啊,题目没说,我说应该没有相同的吧,题目也没说,就按不同来排序就行。他敲代码,我在旁边辅助,敲完以后,测试数据过了,就交了至关重要的第一发,三个人充满期待的盯着电脑屏幕看着返回结果,YES,返回了YES!13分钟1Y。然后我们看榜,有人出了C题,我看完题意以后,博弈题,好像是白皮书上的原题……不过也不敢十分的肯定,看到榜上有人5分钟就过了,代码肯定很短。于是我跟ZS弄这个题,WYP去看其他题目,想了好久,还是没很确定的想法,ZS说先用暴力打表试试,于是他去敲,不过后来打表的结果无论什么情况都是先手胜,不对啊,可以举出反例,打印代码,看哪里打错了。然后看到了H题,给出一些数,问有多少对数(ai,aj)满足ai*aj是个平方数,这个题一开始没思路,ZS来想这题。又看了看榜,发现B题由三四个队过了,我看了看题意,题意很简单,就是对一件商品,每个人都有一个竞价,有三种操作,给出竞价x,撤销以前的竞价x,询问当前的最小唯一竞价,比如竞价有 2 2 4 5,那么最小唯一竞价就是4. 觉得这题不难,我就开始跟WYP说题意和我的想法,用map记录某个竞价出现的次数,把那些竞价唯一的价格丢到set里面去,set很适合本题,里面的数都是独一无二的,而且是默认从小到大排好序的,所以输出最小的唯一竞价,如果set非空的话,那么答案肯定是第一个,WYP肯定了我的思路,于是我就去敲代码,WYP在旁边看着我敲,给我指出哪里需要注意,他真的很聪明,想到了好多点,我们配合挺默契,很快就敲完了,测试了用例也能过,于是就交了,返回YES!54分钟1Y。后来我看了看J题,大数问题,就是问两个大数是否一样并且一个大数能不能被11整除。我立刻给WYP说了题意,然后确定了想法是对的,我就去找大数的模板,前两天刚在网上找到了一个大数四则运算简易高效模板,不过我只用过加减,还没有用过除法,模板的除法参数是大数字符串,以及int类型的除数,返回的是余数,正好能完美运用到本题,希望这个模板没有错误吧,于是我就小心得敲模板,敲主函数的时候,WYP还是在旁边看着并提醒需要注意的地方,敲完后测试数据也过了,又测试了其他几组数据,也能过,然后就交了,返回YES!漂亮!69分钟1Y。比赛进行一个多小时了,榜上C题过了一大片,后来我说,C题应该是个原题,见过,而且那么快有人过肯定代码很短,我记得n>=3的时候就是输出后手胜,考虑对称,要不试一试吧。于是我们就赌了一把,只判断n是否大于等于3,然后交了,等待结果,YES!77分钟1Y。我们都叫了起来,WYP说这人品也太好了吧。就这样20多分钟,我们连过了三题!这时候我们看了看榜,进到了金牌区,真的很高兴,我提醒说大家冷静下,还有别的题目。后来看到了L题,读完第一遍感觉就是先强连通分量缩点然后最短路,WYP也看了本题确定了本题就是个模板题,先缩点,然后DFS一下,不用最短路,因为缩点以后就成了树了,也是,于是WYP就去敲L题。这时候ZS还在搞H那个平方数的题,ZS图论不错,我给ZS说了题意,然后他去辅助WYP搞L题。这种模板题只要思路正确A掉应该没问题的。这道题用了比较长的时间,中间还有一次把模板敲错了,最后敲完了测试数据也正确,于是就交了,返回YES!132分钟1Y。漂亮,我对WYP说,厉害啊!这时候看了看榜,还是在金牌区,我们三个都很高兴,没想到这次配合的这么好,五个题全部都是1Y。比赛还剩下两个小时多一点,看了看别的题,各种没思路,不会……..这时候H题过的人还是挺多的,我们就把希望放在了H题,ZS有了新思路,用质因数做哈希,可以降低复杂度,于是去敲,在距离比赛还剩一个多小时的时候,H题测试数据过了,于是就交了一发,返回TLE……天哪…这时候,我们排名从金牌区也滑到了银牌第二名。和队友说,银牌我们应该是保住了,但能不能更好一点。这时候坐在我们前面的三个队伍都过了6题,我们5题紧跟在他们后面,如果再过一题的话,因为全是1Y,时间有优势,应该能挤进金牌区。于是ZS继续改H题(期间WYP试交了几发K题),他说还可以再优化一下,用两个质因数时间可以减小一半,我对他说,还有一个小时的优化时间。不过ZS神优化,十几分钟就优化好了,测试数据也能过,提交,返回YES!ZS哇的一声快把我吓死了,不过我也哇了一声!太厉害了,258分钟2Y。我打趣说到打印的那张“佛祖保佑 永无BUG”果然管用,ZS激动的拿起那张纸亲了一口!这时候已经封榜了,不久听到前面队一声欢呼,他们又过了一题,7题了…右前方的那一队也早过了第7题…我们队得金牌的几率又小了……这时候ZS做了一个伟大的决定,做G题,因为G题题意和H题只有一个地方不一样,H题是平方数,G题是立方数,按照他的代码,再改一改,有可能过。于是我们又把希望放到了G题上,ZS如有神助,不到20分钟就改好了,然后惊喜的发现测试数据也能过,交!还是不交!交!交了一发,判题机始终不返回结果,我们三个就睁大眼睛,充满渴望的盯着屏幕,然后我把打印出来的“佛祖保佑”拿到电脑屏幕上,我们三个就在那拜啊拜,拜啊拜。还没有返回结果,ZS说受不了了就去外面上厕所,突然他又回来了,而且手里还拿着一个气球,我问这是谁的,他说A39是咱们队把,志愿者给的,我说咱们那道题还没有返回结果啊,不会是弄错了吧,要不给他们送回去,问问清楚,拿着别人的气球也不好。ZS又拿着气球给志愿者送去了,过了一会,又拿着气球回来了,说就是A39啊,WYP发现气球的颜色正好是刚才交的那道题的气球颜色,不会是过了吧!!!ZS就把气球插到了我们队的牌子上,突然,电脑屏幕上弹出一个框,显示了大大的YES!!!天啊,太不可思议了,我们都激动的叫了起来,那种感觉真的是太不可思议了,这就是ACM比赛的魅力,总有那么多的期待和惊喜等待着我们!280分钟1Y!这下进金牌区的可能性大了很多,同时7道题,我们时间上应该占优势。当时,我们三个真的是太高兴了,我都差点给ZS跪了,膜拜!发现老师在窗外,向我们投来赞许的目光。很想哭的感觉,感觉心里有一块空洞的地方终于被补上了!就这样,比赛结束了。
搞了两年多的ACM,经历了去年的失败,今年终于得到了回报,给自己,也给老师交了一份满意的答卷,没有让老师们失望。接下来就是等待结果……很兴奋,到底能不能拿金牌。之前我们商量的是保铜夺银,从没有想过能拿金牌。终于等到了颁奖仪式,流程是先一一揭晓封榜后每个队提交题的是否通过情况,从低到高开始看。过程有些慢,我们学校有三个队拿到了铜牌,接着是银牌区,我们排在第二位,随着下面封榜后提交题目是否通过的揭晓,我们从银牌开始向下滑,不过下滑的幅度不大,银牌应该能保住,到了我们队的时候,揭晓H题,通过!然后我们就到了金牌区的倒数第四名,然后继续揭晓,下面的队也挤到了金牌区,我们到了倒数第三,心里很紧张,然后成了倒数第二,当银牌第一的揭晓的时候,我终于松了口气,是金牌!!真的是金牌!!真的太高兴了,能拿到金牌真的没有想到!颁奖的时候,终于站到了领奖台上,拿着手中沉甸甸的金奖牌,看着台下的两位老师,有说不出的感动。颁奖仪式后,把奖牌交给队友,一起分享着胜利的果实,我们谁也没有料到。然后我给妈妈打了电话,去年今天也是母亲节,当时说的是失败,而今年今天也正好是母亲节,我要把成功与妈妈分享!这也是送给她的母亲节最好的礼物!
山东省第六届ACM程序设计竞赛结束了,我们学校取得了一金三铜的历史最好成绩!
搞ACM的这两年中,经历了太多太多,也收获了太多太多,有过泪,有过笑,有想过退缩但始终没有放弃,有过失败,有过成功,我懂得了重要的不是结果,而最精彩的是过程。在这个过程中,要感谢太多人,感谢卢老师为我们创造一个实验室大家庭的环境,在实验室的时光,是大学生活中最美好的回忆,感谢周老师对我的宽容,当我有次犯了很严重的错误时没有批评,反而是安慰和理解,我永远都不会忘记,感谢封老师对我们的思想指导,把一切都为我们准备的那么全面与周到,处处为我们着想,还记得您在我们去年省赛失败后说过的话,谢谢您!感谢学长学姐们对我们的帮助,为我们创造ACM实验室坚持,努力,不放弃的精神!感谢ACM集训队的所有队员,很高兴认识你们,喜欢大家一起并肩作战的感觉,有兄弟,不孤单!还有我的队友,YYM,你是一个做事极其认真的人,一定可以达到自己的目标,ZS,你是个有理想有抱负的人,很多方面我都很钦佩,在考研路上再一起加油,一定能考上理想的学校。WYP,你真的很聪明,一定要坚持下去,明年等你们的好消息。
值得庆幸的是我在ACM这条路上没有留下遗憾,虽然有过失败,但这个过程中我收获了太多太多。过几天就要离开实验室了,在那里呆了两年多,真是舍不得。但是我也要向着新的目标前进了,考研!一步一个脚印,加油!实验室集训队的学弟学妹们,你们也要加油,明年就看你们的了!
这篇关于没有什么不可能—记山东省第六届ACM程序设计竞赛(退役总结帖)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!