知道topcoder是很早前的事了,但是一直没去做过。昨晚是TCC2007(Algorithm) 资格赛的第一场,就去做了一把,感觉不错,虽然有点小遗憾(被人challenged了一道)。
昨晚第一次做,对整个过程也不是很熟悉。前两道题都挺简单的,第三道当时没想到什么好方法,事后知道那道是动态规划的。所以很快做完前两道,当时room里排第二,第三道没什么想法就打算不做了,呵呵。然后没事就随便生成一些数据测试自己的程序。由于测试的不太认真,到最后3分钟的时候突然发现第二题错了,当时有点紧张了,毕竟剩下的时间不多了,就赶紧单步分析终于找到错误,是数组边界的情况有一种漏掉了(PS:当时做第二题只图快,所以思路是一边写一边想的,然后补补改改,代码比较乱,算法也比太好),于是赶紧resubmit,这时这道题的得分一下子从480 -> 150,唉,但最关键的还是隐隐觉得这题还有点小问题。不过,已经没有时间再思考了,我resubmit之后10s内coding阶段就结束了。
休息了一会,就是challenge阶段,果然不一会儿我就被人查了,唉,room里的排名就到10了,有点灰心,心想当时空了这么多时间(因为没做第三题),怎么就没好好做第二题呢。我用的C#写的,看到这个room里还有一个人用C#写,就看他的代码。大致看了一下他的代码,觉得有问题,但有不知道哪的问题,可能当时心情有点沮丧,加上已经晚上2:30了,头也不是很清楚。到最后5分钟,我看自己就这么分析他的代码肯定没结果了,就打算把他的代码敲到自己机子上试试。于是不顾三七二十一的狂敲,用了不到4分钟时间搞定(真佩服自己的速度,哈哈,代码挺长的呢),用自己生成的数据一测,果然有问题,在最后15schallenge他的代码,successfully,加50分。马上challenge阶段结束了。
最后是system test阶段,到这里就只能是等结果了。唉,感觉前两个阶段都很紧张啊,都是赶在最后几秒钟,呵呵,可能就是因为第一次没经验吧。
系统测试结果我排在room第7。资格赛晋级了(总第496,取签550),虽然有点悬,呵呵。然后我的rating也从not rated 到现在1210分,当时第二题要过了,分数就更高了,yying。
第一次topcoder结束了,现在做了个小小的总结吧。看到和世界一流高手的差距还是很大的(最一流的高手还没来参赛呢)。以后要不断努力啊。topcoder和ACM有很多相似的地方,也有很多不同的地方,我列举如下:
1.ACM是3个人一队,topcoder是自己一个人
2.ACM一般是5个小时,5-9道题;topcoder一般是70-80分钟,3道题
3.ACM比较注重程序的效率,往往测试数据规模比较大;topcoder我觉得更注重编代码的效率和正确性,测试数据规模一般会小一点
4.还有一些细节实现上的差别。比如ACM的输入输出是标准输入输出,topcoder是参数传递和返回值形式。ACM是写函数,topcoder是写一个类,里面包含一个指定的函数。
以上是我第一次的一点体会,可能有些地方对topcoder的理解还不是很到位。总之以后还要继续努力,哈哈。