成就中心 DouJin Terraria! 社区服务 统计排行 帮助
  • 4957阅读
  • 3回复

[棍比赛介绍向.第一弹] Topcoder Algorithm

发帖
179
信仰
0
蓝点
171
符卡
0
— 本帖被 franniss 执行加亮操作(2011-03-18) —
算法/程序设计向专门比赛介绍
欢迎随意吐槽

Topcoder是一家专注于做比赛的神奇公司。
通过访问www.topcoder.com/tc可以看到详细的比赛信息。
比赛主要分为Algorithm / Design / Development / etc (Test) 等不同的类别。
一般以算法比赛(Algorithm)参与最为广泛。
另外如Design和Development是将实际的项目作为比赛题目的,报酬也是相当的丰厚~

我们主要介绍下Algorithm的赛事
Topcoder Algorithm现在主要赛事有Single Round Match (SRM), Topcoder Open(TCO),两者的规则基本相同。只是赛制的不一样。
SRM是周期性的单场次比赛。大概每个月2~3次。如果你注册程序Topcoder会员,并选择了相关的选项,则在比赛前1天左右,会收到提示的邮件。不过对于在中国的参赛者来说,有一点非常难过的事情就是比赛时间一般是在0:00或1:00开始。偶尔有些白天比的,绝对是不容错过的好机会。
TCO是每年一次的赛事。大概是现有一段时间给参赛者注册,然后举行几场初步的选拔赛。选出一些参赛者,然后再举办若干轮淘汰赛(基本上就是连续的每周末),最后选出18人到美国总部参加现场赛~ (比如resty酱就是去年在最后一轮差那么一点的悲剧~
接下来介绍比赛的规则

比赛是在一个C/S的环境下工作的。
首先你要下载一个Arena。可以在www.topcoder.com/tc左边的菜单中选择Competitions/Algorithm/Launch Arena。
然后用你的账号和密码登陆Arena,如果你是第一次参加比赛,你的名字会是白色的。
登陆后你就进入了一个聊天室。可以和世界各地的人们聊聊天~
通过菜单你可以进行必要的操作,包括进入其他的房间神马的。

比赛第一阶段是注册~ 登陆后要在比赛开始前3小时到开始前5分钟之间的这段时间注册~
然后等快要开始的时候,你就可以进入比赛的房间了。
每次比赛将会分为两个区域Div I 和 Div II,Div II的题目会比Div I的容易很多,当你第一次参赛的时候将被分配到Div II,以后参赛将会根据你的rating (积分)来分配区域哦。(TCO一般不会分难度了,理由很容易明白的)
每个区域又会分成许多的房间,每个房间20人左右,比赛后面的阶段将会以房间为单位~赶快进房间给大家打个招呼吧~

接着比赛就开始了。
比赛支持的语言有C++ Java C# (这些语法差不多),VB(这个很少人用)。 题目为英文哦~
每次比赛会有三道题,根据难度其分值分别为 250/500/1000 (有时会有浮动)
题目一般是要求你完成一个类,其中有一个其给定的函数,完成其给定的功能。
当你打开题目的时候,将会有一个计时器开始计时,等到你提交的时候,经过的时间越多,你的得分将会越少。
每到题目都配备了一定数目的测试数据。你可以测试通过这些数据之后再提交,以保证程序得正确性。但是,这些配备的数据往往只是很简单的数据,不一定能够完整反应你程序的正确性,所以最好考虑的周密一点。
编码阶段一共有1小时15分钟,结束后有大概10~15分钟的休息时间

休息完了,下面将就如下一个环节:Challenge

Challenge环节中,你可以看到房间内所有人所有题目提交的代码~,如果你认为他的方法有错误,不能够满足题意的话,可以点challenge按钮,自己构造一个数据,使得他的程序运行出错误的结果(比如时间过长/runtime error/或者答案错误),那么你就可以取得50分,已经被challenge掉的代码就不能再cha了(比手速?比网速!)。不过如果人家的程序运行正确了,你就要扣25分哦,三思而后行啊~

Challenge环节大概20分钟(具体忘了= =),结束后就是System Test。系统将会使用大量的测试数据对所有的程序进行测试,如果都通过了,那么恭喜你,这题的分你就拿到了,如果有一个失败了,那么该题的状态就变成了failed system test, 只能得0分了= =

在System Test结束后,会根据你这一次比赛的表现,计算你的rating值(可能增加,可能减少)。根据Rating的不同,账号的颜色分为灰色 绿色 蓝色 黄色 红色5种,总之在Arena中,看账号颜色,可以大概的估计其之前的表现~

鉴于rating的计算公式及其复杂,于是我也高不太清。总之room rank和division rank尽量高就是了~

在topcoder的网站上,你可以查看每个人rating变化的曲线,比如说resty的就是这样:

最后是一些tips:
1.    Arena里面有Practice Rooms,可以做以前举行过的比赛的题目。刚开始可以借此熟悉一下。
2.    Arena支持一些插件,在比赛中可以自动生成stub代码(可以节约不少时间)。如KawigiEdit或FileEdit + CodeProcessor + TZTester都是很常见的用法。(前者是一个加强的编辑器,后者是可以让你使  用本地的IDE的插件组合)。 (参考http://apps.topcoder.com/wiki/display/tc/How+to+install+The+Arena+plug-ins
本帖最近评分记录: 1 条评分 蓝点 +10 隐藏
franniss 蓝点 +10 2011-03-18 棍比赛触
发帖
661
信仰
0
蓝点
651
符卡
0
只看该作者 沙发  发表于: 2011-03-18
(比如resty酱就是去年在最后一轮差那么一点的悲剧~ 加油喔

Challenge环节很有意思,先发现破绽最大的题会有存在优势。
发帖
179
信仰
0
蓝点
171
符卡
0
只看该作者 板凳  发表于: 2011-03-18
恩,有的题目有一些地方很容易忘记考虑一些特殊情况。一般发现这个的人就会在中场休息时构造好针对的数据,然后等challenge环节一个一个的来(很多时候根本不管人家考虑没考虑,至少得分的期望很高)~
发帖
136
信仰
0
蓝点
23
符卡
0
只看该作者 地板  发表于: 2011-03-18
我上次认认真真的A题是什么时候了···人老了,就忘了科学,只剩技术···
描述
快速回复

您目前还是游客,请 登录注册
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
认证码: