如何在2020年参加TopCoder竞赛

昨天(dbq,这个博客鸽了一个多月,实则是2019年1月),我参加了我的第一次TopCoder竞赛,感觉体验还不错。在之前,我就想参加TopCoder上的比赛,但是我不知道怎么参加,也没能成功找到教程。于是我计划写一个简单的指南,为想参加TopCoder的选手提供一点点经验。

1、TopCoder是啥?

如果你打开TopCoder的官网,你会发现似乎这不是一个程序设计竞赛网站(和Codeforces/AtCoder)差别很大。按照我的了解,这是因为TopCoder网站经历了一次改版。现在的网站首页主要是他们的众包业务,而比赛并不显示了。

程序设计竞赛首页是这个链接,但是题库和比赛界面却是这个链接。访问这些网站可能需要访问一些墙外内容,可以自己试试具体如何。

第一场SRM比赛是在2001年5月8日举办的,至今已经举办了七百多场。我把所有七百多场SRM参与选手数目和时间做成散点图(注意:时间轴可能并非线性的)。我们可以借此对这个平台略略了解一二。

我们可以看到,在2014年前TopCoder选手的数目是在稳步增长的。TopCoder在算法竞赛的历史上发挥了重大的作用,第一个推广了颜色并塑造了线上的算法竞赛,而在Codeforces诞生的2010年,如Codeforces网站底注所写,Codeforces应当是唯一的Web2.0比赛平台。也就是说在那之前应当只有TopCoder一个主要平台。不仅如此,在ICPC World Final的现场直播中,会显示一个选手的Codeforces和TopCoder Rating,也足以说明TopCoder的影响力。但在2014年之后的一个时间点开始选手数目就开始急剧下降。按照CF选手的说法,是因为网站的一次改版导致了选手的流失。可以参考这个CF博客:https://codeforces.com/blog/entry/21879。虽然现在一场TopCoder的参赛选手可能只有一场Codeforces的2%左右,但是TopCoder的题目质量依然稳定,顶级选手也频频选择参加,每年一度的TopCoder Open,更是是水平一流的全球线下算法竞赛。因此,在2020年参加TopCoder竞赛,也不失为一种休闲娱乐,刷题放松的好方法,而由于现在实际参与的选手数量相当有限,而没有任何类似的教程,因此我写点这个也是有价值的(?)。

2、打TopCoder的体验

一场TopCoder比赛的结构是这样的:75分钟 Coding Phase 做题,5分钟 Intermission 间歇,15分钟Challenge,就和Codeforces的Hack差不多。75分钟中共有三道题目,较为典型的分数分布是250-500-1000,没有部分分。随着时间的流逝,分数会逐渐缩水。每道题都会提供相当强的若干个样例,供选手调试。值得一提的是,在比赛过程中提交代码,并不会测试除了样例之外的Pretest或System Test等任何数据,因此任何能够通过样例的代码都可以在这75分钟内获得分数。在Challenge时,你可以看到任何选手的任何代码,包括自己没能通过的题。提供一组数据使得该选手出错,你就获得了50分,否则失去25分。在15分钟之后将会进行System Test。按照经验SystemTest可能在一两分钟之内完成,然后分数将会在一两分钟之内更新,题解也马上会发出。这一点,要比Codeforces的一些比赛做的好一些。

TopCoder比赛的总体体验应当是所有线上平台中最紧张刺激,最趣味的,感觉TopCoder整个设计的和游戏相差无几(除了题目是真正的算法题目)。在TopCoder平台上,在比赛时,选手们分配到了不同的房间,这时每一个房间同时可以起到聊天室的作用。我第一次接触的时候,的确心中产生了一个疑问:如果让选手在比赛过程中聊天,难道不是会可以互透题解吗?实则不然,想象自己在玩吃鸡游戏,能够聊天也必然不会告诉别人自己在那里。于此同时,聊天室为参赛选手(我)带来了极强的参与感,有助于缓解比赛紧张,包括Challenge Phase的时候聊天也很有意思。

3、其他

在二零零几年TopCoder刚刚诞生的时候,选手参赛的方式就是使用Java Applet,一个专门用于参加TopCoder竞赛的桌面程序。当然,仅仅使用这个程序是不好用的,包括从外面复制代码似乎都做不到。于是很多选手都使用了各种插件,可以参考这个CF博客https://codeforces.com/blog/entry/61252。现在的很多选手,比如Petr,都仍然在使用Java客户端。但我参加TopCoder竞赛,先使用了Java客户端,然后在聊天室内问了问,大家都在使用网页端。网页端实则更容易使用,而且连接上的各种问题会少很多。

TC 的题目代码大多不是很长,但是思维复杂度较高。 而且似乎动态规划类型的题目比较多。 TC 的评测机很快,并且开 -O2 优化,而时间限制默认 为 2 秒,内存限制默认为 256MB,所以基本不用担心被卡常数等问题。 

TopCoder是在线算法竞赛的始祖,引入了颜色,Challenge,Virtual Participation,Room等概念,希望我以后能继续多打TopCoder,提高思维水平……

希望以后能把这个blog和其他blog修的更好一些……


发表评论

电子邮件地址不会被公开。 必填项已用*标注