代码改变世界

记东南大学第四届逻辑算法程序设计竞赛决赛

2007-05-16 17:10  老博客哈  阅读(1097)  评论(5编辑  收藏  举报

                                                  记东南大学第四届逻辑算法程序设计竞赛决赛

                                                                                  农夫三拳@seu
                                                                                   drizzlecrj@gmail.com
     

阵容:  ym (上届比赛和我并肩杀入决赛的队友)
          sigh (后起之秀,期待省赛能够爆发RP)
          drizzlecrj :-)

    这个比赛对我们来说已经不算陌生了,初赛很顺利的以总分第一的优势入围。决赛安排在5月13号,比赛时间是从上午的9点到下午2点,真的很巧,地质大学的邀请赛刚好是那天的下午2点到晚上7点。

    比赛之前安排了一次试机,不得不赞一下计算机学院安排周到。我比较积极,早早的叫上了ym跑到了比赛地点,没想到我们是第一个到的,发现wf已经和另外一名同学在调试机器了。中途pc^2服务器出了点故障,系统进不去,耽搁了半个小时。等我们坐定,也来了约摸4,5支队伍了。熟悉了一下pc^2的客户端,感觉很爽,不过很慢--# ,在Eclipse里面敲了了一个A+B,sumbit成功以后,ym去Erission实验室干活,我赶去教室上dp课了,sigh一个人在这里做练习赛。   次日,我让ym和sigh自行去那边比赛,我一个人过去,没想到到超市去买午餐花的时间太长了,结果去迟到了,幸好sigh早早的到了,坐定,一扫题目,晕了,几乎全是打字题,我是队里的快手,救我敲代码了,第一题是简单的gcd,两分钟搞定,发现Eclipse调试有问题,换Devcpp,成功,submit,等待了约3分钟才得到服务器的消息,Yes,和sigh握手鼓励,我看C,发现也是弱题,开始敲,这是ym来了,和他通报了一下概况,就让他和sigh一起看题去了。C是赋值问题,里面有个陷阱,就是把未赋值的数赋值给已经赋值过的数,会导致两者都未被赋值,我画蛇添足的加了个判断,结果wa了两次,郁闷,第三次Yes了。等我做完,发现sigh和ym已经把一叠题目交到我手上了,ym语重心长的说“这些题目啊,是按照难度排序的,你慢慢写吧”,我头上飘过几个问号...下面做的是I,把这个称为英语题到是不错,我可是从zero一直写到fifty-nine,按照规则写好,sumbit,服务器返回wa,郁闷,怎么可能?我和ym检查了一遍又一遍,sigh甚至查起了字典。郁闷,没想法,换题,敲H,这个太弱了把,我差点想笑出来,两分钟敲好,sumbit,过了一会,刷了一下board,发现我们4题了,好奇怪,我们只过了三题,把wf叫过来问了一下,原来测试数据里面把forty写成了fourty,我们的solution是对的。这个时候时间大约是11:10。

    长舒了一口气,看F,这个题目以前做过,很快就搞定了,交上去之后wf一直没有结果,貌似是数据出了些问题,要手测,这下要辛苦他了。接着我们看D,我写了一个不可能超时的n^2算法,没想到竟然返回tle,算了,你不仁我也不义,我交表,写了一个程序把素数都生成了出来,然后枚举一下就能达到O(n),我要更恶心一下,写个O(1)的。交上去之后等结果了,没想到迟迟的没有结果,10多分钟过去返回一个结果tle,我怒了,这搞什么东东!找到负责人,他们忙解释是数据出现了问题,真是的,又平白浪费了几次罚时,还等着参加下午的cug网赛呢。转看B,sigh和我说了他的算法,我没太听明白,不过正方形的公式我感觉没什么问题,长方形的找出了一个bug,这个时候ym提议找出任何两个点,我大喜,马上认可,这样他们把公式写好,我很快敲好,发现长方形的还是不对,原来长度为a的边长有a+1个点,改过之后,还是过不了Sample,我一拍脑问,发现长方形有重复的地方,两个对角点被重复计算了一遍,马山改正过来,要sigh想一组数据,ym绝对没什么大问题,我就提交了,这次很快就出结果了Yes了,大家互相鼓励了一下,继续看题。这次看的是E题,听wf的口气这题是来***难我们的。我看了一下,这个不是传说中的-2进制原型吗,黑书上有的啊,这个时候才发现sigh没带,我自己怕重,也没带,郁闷了,怎么办?回去来呗,看来只有这样了。走之前他们把G题给我说了一下,我一听就是“一笔画”题目嘛,有向图的欧拉路径。然后就去写代码,写了一半,发现和我想象的不一样,打印路径不知道如何处理。算了,我回去拿书得了。让sigh写欧拉回路,我闪人。 刚刚走到一楼,灵感来了,我立即冲上五楼,发现sigh刚刚坐定,准备写欧拉回路。我上,开始推我的结论,发现没问题,一看数据比较大,肯定要用大数,敲个C++大数会死人的,偷了一下懒,开始写java,大约花了15分钟把题目搞定了,经过ym指正,修改了一处隐蔽的bug,提交。然后继续欧拉路,还是sigh眼疾手快,发现带的模板里头有一个欧拉路径的,马上拿过来看,恩,没错,果然如此。so high,这个时候我们的E出来了,Yes,刷了一下board,发现我们8题了,排第一,后面第二名6题,从我的经验来说,拿第一肯定没问题了,也就完全放松了,大家一边吃东西,一边聊天,(不知道有没有影响前面的队伍:-()。时间差不多还剩下1个小时20分钟,我开始敲模板了,发现高兴过头了,竟然敲错掉了,把最小生成树的给敲上去了,郁闷,感觉改,我按照原来的思路写着,遇到一处不顺,sigh说他有一个算法,把每个字符串看成一个结点,感觉好像没问题,我就没想什么,找着他说的敲了,最后竟然瞎改瞎改过了sample,可是还剩15分钟了,发现这个时候网络断了,服务器连不上,我们用U盘拷着去给admin手测了,发现不对,郁闷,还剩5分钟,我一直想要一个完美的结局,不能放弃,我又侥幸的去修改了一个地方,发现仍然wa,比赛就over了。后来发现sigh的算法有问题的,不能把每个字符串看成结点,不然就变成hamilton路径了,我原先的算法是正确的,怪不得测试的时候出了点莫名其妙的问题。 赛后留下来讲了一些事情,我就急忙和sigh赶下楼去参加cug的比赛了,已经20分钟过去了,我们一直没放弃,奋战到了晚上7:00,最终11名,貌似受到了cug的官方邀请去参加现场赛了。happy~

总结:
    这次比赛比较简单,只算是我和sigh之间在省赛之前的一次热身了,发现我们还很弱,还有许多要学习。

附上以前写的两篇总结:
记东南大学第三届逻辑算法程序设计大赛
东大ACM选拔赛赛心得