第二次 Code Jam 经历

来源:百度文库 编辑:神马文学网 时间:2024/04/24 13:26:56
Google Code Jam 2006 刚刚结束资格赛,我的第二次Code Jam经历也画上了句号。
这一次是全球范围的比赛,比上次Code Jam China2005难不少,三道练习题就让人望而生畏。第一个是变形的网络流,系统学习过算法的人可能会比较熟悉,我也是在最近两个星期的学习之后才基本掌握的。郁闷的是前两天作了一份解答却通不过系统测试,还找不出错在哪:(。第二题是字符串处理,或许可以用效率不太高的搜索解决,但也不简单。第三题是动态规划,改进的汉内塔问题,做得基本顺利,却也是花了三个多小时完成。
两周前还特意从图书馆借来了MIT的算法导论第二版,E文的,巨厚重。扎进去看了一通,收获不少。好多算法虽然动了,却还不熟练,无法满足TopCoder竞赛这样的高强度要求。要在一个小时内完成三道题,必须是看完题后就能有明确的算法,实现过程中还不能出问题才行。
Revv是昨天早上去做的,相当不爽,第一题就花了40分钟,导致第二题没有时间完成。我是晚上在实验室做的,结果比Revv更惨,第一题花了40多分钟而且还没做完,赶紧看了第二题,用暴力法来解,也是在时间结束后才刚刚通过样例测试,显然已经出局了。
前天在Code Jam上练习时出现意外,导致原来的ID没法打开题目了,于是又注册了一个ID,作为备用。昨晚在经历的惨烈的失败后,把这个备用ID也拿出来用了。第一题还比较顺利,用了大概13分钟。有趣的是第二题,居然和我刚才做过的那个第二题是一样的,直接拿来用,并再测试了一下,这时才发现刚才用的暴力解法并不能通过样例测试,求解N=16时超时了,此时的复杂度是16!。只能重头再来,在纸上演算了很多遍后,最后发现这个题还是可以用DP(动态规划)来减少计算次数的,赶紧实现之。在结束前5分钟总算完成了,提交。看了一下得分,两道题共500分左右,排名在1500左右,要想晋级,必须前面有一半人通不过系统测试,并且我都要pass。
系统测试的结果已经出来了,我刚才登陆进去发现Ranking已经变成了1531,黄色,想起昨天Revv还说我是Yellow来着。在TopCoder,黄色是属于中等的级别。资格赛只取前1000名晋级,我已经被淘汰了。去看了看测试结果,失败的果然是一大片,当然也包括我的第二题。居然是在最后一个测试项目上失败了,N=1的特殊情况。再去看了看题目,还是不明白为什么是那样的结果。
第二次Code Jam经历就这样结束了,我目前的水平也就这样了,同时也说明还有很大上升空间,呵呵。这阵子恶补了一下算法,收获还是挺大的。要再接再厉,再在TopCoder上奋战一段时间,提高自身的算法能力,也算是给以后找工作时的面试做准备,加油!