竞赛概念
赛制
在算法竞赛领域,存在多种不同的比赛赛制,每种赛制在提交规则、得分方式、排名机制以及罚时计算等方面均有所差异。理解这些赛制对于参赛者制定策略至关重要。以下将详细介绍几种主流的算法竞赛赛制:
OI 赛制
OI 赛制是信息学奥林匹克竞赛中普遍采用的评测方式,其核心特点是注重解决方案的正确性和部分得分机制。
- 提交机制: 通常允许选手对每道题目仅提交一次最终代码。在某些平台或比赛中,也可能允许有限次数的提交,但最终得分以赛后测试的结果为准。
- 得分机制: 采用“部分分”制度。每道题目通常设定为满分 100 分,但在赛后评测时,即使程序未能完全通过所有测试用例,也可根据通过的测试点比例或特定条件获得相应的分数(例如,通过较小规模的测试点可获得 20 分,通过中等规模的测试点可获得 60 分等)。这意味着即使算法未能达到最优解,只要部分正确,也能获得分数。
- 排名机制: 比赛过程中通常不提供实时排名,所有选手的最终得分和排名在比赛结束后统一公布。排名主要依据总得分进行降序排列。
- 罚时规则: OI 赛制通常不设严格的罚时概念。即使多次提交,也不会像 ACM 赛制那样扣除额外时间或分数。分数以选手最终提交(或最后一次提交的最高分)在赛后评测中获得的成绩为准。
- 应用比赛:
- CSP-J/S (计算机软件能力认证入门级/提高级)
- NOI (全国青少年信息学奥林匹克竞赛)
- NOIP (全国青少年信息学奥林匹克联赛)
- 蓝桥杯全国软件和信息技术专业人才大赛(部分组别/阶段)
- 其他一些以培养算法思维和编程能力为导向的国内青少年或初级赛事。
ACM 赛制
ACM 赛制是国际大学生程序设计竞赛(ACM-ICPC)所采用的标准赛制,其特点是强调代码的“一次性正确性”和团队协作效率。
- 提交机制: 允许选手对每道题目进行多次提交。但一旦某道题目的代码通过(Accepted),该题即视为解决,后续对该题的提交将不再计入有效成绩。
- 得分机制: 采用“全有或全无”的评分原则。每道题目要么获得满分(通过所有测试用例),要么得零分(未能通过任何测试用例或存在错误)。不存在部分分。
- 排名机制: 比赛期间通常提供实时排行榜。排名首先依据解决问题的数量进行降序排列(解决问题越多排名越靠前)。如果解决问题数量相同,则根据“罚时”进行升序排序(罚时越少排名越靠前)。
- 罚时规则: 罚时是 ACM 赛制中一个关键的惩罚机制。
- 每解决一道问题,其罚时等于从比赛开始到该问题首次正确提交所花费的时间。
- 对于每道已尝试但未通过的题目(即提交了但获得 WA/TLE/MLE/RE/CE 等非 AC 结果的题目),通常会额外增加固定罚时(例如 20 分钟),无论提交了多少次错误,只计算在该题首次 AC 前的错误提交次数。
- 最终总罚时是所有已解决问题罚时之和。
- 特例说明:
- Codeforces 等在线平台在 ACM 赛制比赛中,每次错误提交通常会扣除一定分数或增加罚时,具体规则会在比赛前公布。例如,常见的规则是每次错误提交增加 20 分钟罚时,并可能在最终分数中扣除少量积分。
- CCPC (中国大学生程序设计竞赛) 等国内赛事通常遵循 ACM/ICPC 的标准罚时规则,即每次错误提交增加 20 分钟罚时。
- 应用比赛:
- ICPC (国际大学生程序设计竞赛) 及其各区域赛。
- CCPC (中国大学生程序设计竞赛) 及其各分站赛。
- 百度之星编程大赛
- 其他众多团队编程竞赛和部分个人编程挑战赛。
IOI 赛制
IOI 赛制结合了 OI 赛制的部分得分特性与一定的提交自由度,旨在鼓励选手在保证正确性的前提下追求更高的效率和更优的解法。
- 提交机制: 允许选手对每道题目进行多次提交,通常有提交次数限制(例如每道题 10 次提交)。
- 得分机制: 采用部分分制度,与 OI 赛制类似,根据通过的测试点获得相应分数。
- 排名机制: 比赛过程中通常不显示实时排名,或只显示部分排名信息。分数以选手对每道题的最后一次提交的得分(或历史提交中的最高得分)为准。
- 罚时规则: IOI 赛制通常不设任何罚时惩罚。多次提交错误代码不会扣除时间或分数。这使得选手可以更加从容地调试和优化代码,直到达到最佳表现。
- 应用比赛:
- IOI (国际信息学奥林匹克竞赛)。
- 睿抗 (全国高校计算机能力挑战赛 - 部分赛项)。
- 天梯赛 (中国高校计算机大赛 - 天梯赛)。
- 某些在线平台或教育性质的比赛也可能采用类似的赛制,以降低选手的心理压力,鼓励尝试和探索。
队伍类型
在算法竞赛中,参赛队伍通常会根据其资格、组成或目的,被划分为不同的类型。理解这些分类有助于明确参赛目标和可获得的权益。以下将详细介绍几种主要的队伍类型:
正式队伍
正式参赛队伍是指符合赛事章程中所有资格要求、旨在参与正式排名并角逐奖项的常规队伍。
- 参赛资格: 队员通常需满足特定的身份要求(如在校大学生、特定学年段学生),并符合年龄、学历、注册学校等规定。例如,在 ICPC 和 CCPC 中,正式队员通常要求为在校本科生或研究生,且未达到特定参赛次数上限。
- 评奖资格: 仅正式参赛队伍有资格参与最终的排名评定,并根据其表现获得相应的奖项和荣誉。
下面分别以 ICPC 2024 年南京站为例

打星队伍
打星队伍是一种特殊类型的参赛队伍,其主要特点是参与比赛但不参与正式排名和奖项的评定。这种机制旨在为特定群体提供参与竞赛的机会,同时不影响正式队伍的竞争格局。
- 参赛性质: 打星队伍通常被视为“体验参赛”或“练习参赛”,其成绩通常会在比赛结果中单独标识(例如,排名前/后带有星号
*),不计入正式的榜单排名。 - 参赛目的: 为不符合正式参赛资格但希望体验竞赛、提升技能、进行训练或作为指导的个人/团体提供平台。
- 不参与评奖: 打星队伍无法获得比赛的任何正式奖项和荣誉(极个别赛站会为打星队伍发放奖牌)。
- 常见构成:
- 非在校学生: 如中小学生,他们可能在年龄或学历上不满足大学生竞赛的正式参赛要求。
- 社会人士/在职人员: 已毕业或在企业工作的编程爱好者。
- 指导教师/教练: 为了体验比赛或检验题目难度而组队参赛的教师。
- 跨校组队: 在某些严格要求同校组队的比赛中,来自不同学校的选手若想共同参赛,可能需要以打星队身份报名。
- 超出参赛次数限制的选手: 某些赛事对选手参赛次数有严格限制,超过限制的选手若仍想参与,可以作为打星队员。
- 测试队伍: 组委会内部为了测试系统或题目而设立的队伍。
- 示例: 在 ICPC、CCPC 等赛事中,经常可以看到一些由中学信息学奥赛选手、教练或校友组成的打星队伍。
女子队伍
女子队伍是指所有成员均为(个别比赛要求大多数)生理性别为女性的选手组成的队伍。在当前的算法竞赛环境中,设立女子队伍是为了鼓励更多女性参与编程和算法领域,并促进性别多样性。
- 队伍构成: 队伍中所有队员必须均为生理性别为女性的选手。
- 优待政策: 在许多重要的算法竞赛中,女子队伍会享有一些特殊的优待和鼓励政策,以体现对女性参赛者的支持:
- 单独评奖: 很多比赛会设立专门的“最佳女子队伍奖”或“女子组奖项”,给予额外表彰,不与其他队伍混合排名。
- 优先发放名额: 在一些晋级赛或名额有限的比赛中,女子队伍可能在名额分配上享有一定的优先权或额外名额。
- 专属奖励: 除了荣誉之外,可能会有针对女子队伍的额外奖品或奖励。
- 设立目的: 这些政策旨在弥补历史和现实中女性在 STEM(科学、技术、工程、数学)领域参与度相对较低的现状,提供一个更具包容性和激励性的竞赛环境,吸引和培养更多女性编程人才。
- 示例: 在 ICPC 世界总决赛、CCPC 总决赛等顶级赛事中,均设有专门的女子队伍奖项和相关激励机制。
以团体程序设计天梯赛为例

XCPC 比赛类别
XCPC 是对包括 ICPC、CCPC 等在内的各类大学生程序设计竞赛的统称。这些比赛在层级、规模和含金量上有所区分,共同构成了大学生算法竞赛的生态体系。
从竞赛的普遍含金量和竞技水平角度来看,通常遵循以下层级关系:
省赛 < 邀请赛 ≪ 区域赛
当然,具体情况需具体分析,某些特定省份的省赛(例如:北京地区的省赛),因其较高的题目难度和激烈的竞争,其含金量和认可度也会相应提升。
此外,在更高层级还存在 CCPCF(CCPC 总决赛)、ECF(亚洲区总决赛,如 ICPC 亚洲区决赛)、以及全球最高级别的 WF(ICPC 世界总决赛) 等赛事。这些比赛通常面向顶尖队伍,与初学者(萌新)的直接关联度较低,但它们是算法竞赛的终极目标。
以下将对主要比赛类别进行详细介绍:
省赛
省赛通常是各省份或直辖市内部举办的大学生程序设计竞赛,是许多高校队伍初次接触正式比赛的平台。
- 参赛范围: 主要面向本省或本直辖市范围内的高校队伍。非本省高校的队伍通常只能以“打星队”身份参赛,不参与正式排名和奖项评定。
- 名额分配: 省赛的名额通常比较充裕,多数情况下只要符合基本条件,报名即可获得参赛资格。这为新生和初级队伍提供了良好的入门机会。
- 晋级关联: 如果省赛的主办学校同时也是某区域赛的承办方,该区域赛组委会可能会根据省赛的成绩表现,向参赛队伍发放部分区域赛的推荐名额或优先报名资格。
邀请赛
邀请赛通常由特定高校或机构主办,其参赛队伍范围更广,竞争也更为激烈。
- 参赛范围: 全国范围内的各大高校队伍均可正式报名参赛。
- 名额分配: 邀请赛的名额通常较为有限且宝贵,因为希望参赛的队伍数量往往远超赛场容量。根据各主办方规则进行发放。例如完全根据报名先后顺序发放,或优先保证每个学校至少有一个参赛名额进行发放等方式。
- 晋级关联: 类似于省赛,如果邀请赛的主办学校也是区域赛的承办方,邀请赛的成绩也可能被用作发放区域赛推荐名额或优先报名资格的依据。
区域赛
区域赛是 XCPC 体系中承上启下的关键赛事,也是绝大多数参赛选手所追求的最高荣誉(如金、银、铜牌)的主要来源。
- 赛事定位: 区域赛是晋级世界总决赛的必经之路。通常而言,大家所提及的“ACM 金银铜牌”或“XCPC 金银铜牌”,默认指的都是在区域赛中获得的奖项。
- 网络赛: 区域赛之前通常会举行“网络选拔赛”(简称网络赛)。网络赛的成绩与区域赛的参赛名额关联度极高,是获得区域赛正式参赛资格的主要途径。
- ICPC 区域赛: 通常需要参加两场网络赛(例如:ICPC Online Round 1 和 Online Round 2),以其综合成绩决定晋级资格。
- CCPC 区域赛: 通常设置一场网络区预赛作为主要的选拔依据。
- 难度: 事实上,由于网络赛面向全国范围内的队伍,且名额竞争激烈,在网络赛中打出晋级区域赛的名额,其难度往往不亚于甚至高于在区域赛中获奖。
名额分配
以2024 年南京站为例

报名流程
以2024 年南京站为例

外卡
外卡机制为那些在网络赛中表现不佳但仍具备一定实力或特殊情况的队伍提供了额外进入区域赛的机会。
- 获取方式: 区域赛的主办方通常会预留一定数量的“外卡名额”。如果某支队伍(通常是学校队伍)未能通过网络赛获得正式参赛资格,但具备充分且具有说服力的理由,可以向主办方提交外卡申请。
- 申请理由: 合理的外卡申请理由可能包括:
- 学校首次组队参加 CCPC,且具备一定的培养潜力(例如,CCPC 通常会优先考虑首次参赛学校的外卡申请)。
- 队伍在其他大型比赛中表现突出,但因偶然因素在网络赛中失利。
- 学校在算法竞赛领域投入较大,旨在推广和普及相关活动。
- 申请结果: 外卡的最终发放由主办方根据实际情况和申请理由的充分性进行综合评估和决定。获得外卡通常意味着获得了正式参赛资格。