河南省第五届大学生程序设计大赛回忆录

来源:互联网 发布:淘宝宝贝规则只能颜色 编辑:程序博客网 时间:2024/04/30 04:33

 

        我有幸能参加这届首次被ACM官方授权的赛事,虽然结果不尽如人意,我觉得还是有必要在还记忆犹新时记录下来(免得像上次一样,已回忆不起什么),留作纪念,也可作为后来人的参考吧。

        这场比赛是2012年5/13正式举行的,而我从4月份才开始正式着手准备,其实我本可以在一年之前就开始的,但是已经逝去的,后悔也没有用了。我4月份确定了两位队友,都是一个班的。这一点相当重要,这是团队比赛,不是单打独斗,要相互配合、相互信任,发挥出最大的能量。

我在备战时的策略是:①先让每个人都熟悉比赛的规则、过程;②然后对历届的试题进行分析,整理分类,看看考察的是图论、数论还是几何,或者动态规划、0/1背包等,统计各种题型的比例,找出重点;③最后针对各种知识点整理出一套算法模板。

        我们在进行到上述第三点时,大量的工作还没来得及做,已经到劳动节了,然后我果断决定模板的整理到此结束,开始磨合队伍,一块做题。其实做题才是王道,大多的题都是大差不差,神似形不似。天天还要上课,就晚上还能凑到一块,一天解决一道题已经很不容易了。到周三(5/9)的时候,突然有位老师要请假,而周四也就只有她的一节课,那么有一个完整的白天了。于是,我搞了一场赛前模拟赛(当时设了密码,也没法取消了,密码是:5613),从09:00到14:00真实地模拟了一把正式赛,只是出题人很菜,因为他就是我,我从网上搜了5道别人推荐的中文题目,又挑了3道英文题,可以说是随机挑的,我也只是看到了题目的标题,内容我是不知道的。当然,模拟赛的结果是3/7,联系一下昨天的正式赛,似乎有点关系。模拟赛并没有取得满意的成绩,没有提高自信心,也没有打击我们(毕竟出题不专业)。

       就这样,迎来了5/12,当然不是08年的,经过下着小雨的开幕式后,我们去机房参加热身赛。热身赛就给我们来个措手不及,eclipse哪去了?哪去了?哪去了!!!桌面上没有快捷方式,所有程序里也没有。最后猛然发现桌面上有一个不起眼的图标“NetBeans”,呀,没用过啊!启动之后,很庆幸还是中文的,但就是没有代码提示功能,当时心里那个急啊,没有API就算了吧,IDE连代码提示都没有,这不是坑爹么!没办法,那也得继续啊。不过幸好它还会在 . 之后提示一下。热身赛的两题,一道中文,一道英文,L负责部署环境,录入模板,Y开始看T1,我拿来T2看,一看非常简单啊,求一元二次方程的系数,在代入未知数的值就完了,我在纸上把核心代码写出来后问L和Y T1好做不,他们说还得会儿,于是我上机做T2,结果接收数据时就出了问题,数据没有结束标志,不能直接读取Int,必须读一行,当读到空行的时候结束,又折腾了好一会儿才搞定。接着,转攻T1,中间总是有很多种情况漏掉,一次次的WrongAnswer,终于在一次次的修改后,在最后几分钟AC了。热身赛得到的教训是:要事先考虑到所有的情况,再开始编程。当天晚上,回去后,特地用手机上网查询了一下NetBeans到底有没有代码提示功能,当时查到了,它的这项功能是默认关闭的,记下了开启代码提示功能的方法。

       5/13,开赛前把字典落在了宾馆,吃完饭,Y又花了半个小时的时间去取回来。然后就一直等到8:30正式入场。进入赛场后,L在部署环境时,为了选择工作区间的位置,翻开了D盘,eclipse出现了!轻院太不厚道了,是不是故意藏着eclipse不让我们发现。还是使用eclipse吧。这次还是老样子,5题中文,3题英文。我首先看的还是T2,发现用整数划分不就成了,在携带的纸质资料里翻到了整数划分的递归算法,果断炒上去了,结果果断超时了,最大的数是1000啊,本可以在本地就可以测试的,没办法,想不到点子了,先放一边,问问他们哪一题可以马上做出来,T1简单,L上机做T1,这时Y在分析T3,我准备看T5,Y说T5太难,T6以后都是英文的,于是,我随手拿了英文的T7开始翻译,看明白了,不知道用什么算法解决,又像是整数划分,但是思路很乱,不行。这时L的T1提交了一次但WrongAnswer了,应该有漏的情况,Y查看代码,L到一旁分析T4,T1用了快一个小时才成功。Y上机写T3,T3我没看,但是用了将近一个小时解决了。发现别的队T6都做出来了,然后,开始了纠结的T6……,其实也不难,就是一直错错错,又不间断的尝试过T4,我接着把T8也翻译出来了(花了好大的力气才理解题意),但是不会做,突然,L对于T2有了一种新的方案,举了几个例子都是正确的,我们俩开始在纸上写代码。T2的思路确定后,T6一直没成功,转做T2,提交,竟然WrongAnswer,分析后1、2、3、4应该过滤掉,再次提交,还是WrongAnswer,输出格式?最后有空行不会错啊,去掉最后的空行,再次提交,还不对!这时还剩一个小时了,面包早已摆在旁边,但都没人吃。讨论了一下T4,觉得可行,没有什么算法可言,就是要考虑到多种情况,而且特别多,Y上机编写T4。我和L讨论剩下没有AC的题目,觉得T6不可能错啊!有一个地方需要改改,也许就行了。跟Y说,T4先放放,再试试T6吧。又用了20多分钟,还是不对。Y决定检查一下代码。L和我继续讨论T2,自己测试了多组测试数据,都不可能错啊。时间在一分一秒的流逝……还有最后几分钟(好像是8分钟)的时候,Y说T6对了!对了!对了!松了一口气,名次上升到44。还有几分钟,猛劲看T2,到底哪里错了,又试着提交了几次,还是错误,直到14:00结束。

       结束了比赛,44这个名次,一共98个队,想着能拿个二等奖吧。结果奖项的名额并不是按百分比来计算的,而是10个、20个、30个左右。最后还是三等奖。一等奖12个,疑惑这2个怎么多出来的,前12名并没有并列的啊。

       回忆的支离破碎的,昨天的事今天就记不清了,这是咋了?还是说说上面没有提到的几点体会:

①             要让每个人都看看还没有AC的题目,没准他以前做过类似的题,或者突然有了灵感。

②             一定要分析清尽可能多的情况,在动手敲代码。

③             读题一定要仔细,特别是英文的,不认识的单词不要猜,长句子一定要仔细推敲,理解题意是前提。

④             花点时间关注即时排名,看看哪一题别人都AC了,而我们还没有看,一定是很容易的。

 



河南省第五届大学生程序设计大赛最终排名:http://blog.csdn.net/wujun8/article/details/7564580

 

 

 

 


原创粉丝点击