3.1. 赛制
在算法竞赛领域,存在多种不同的比赛赛制,每种赛制在提交规则、得分方式、排名机制以及罚时计算等方面均有所差异。理解这些赛制对于参赛者制定策略至关重要。以下将详细介绍几种主流的算法竞赛赛制:
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 (国际信息学奥林匹克竞赛)。
- 睿抗 (全国高校计算机能力挑战赛 - 部分赛项)。
- 天梯赛 (中国高校计算机大赛 - 天梯赛)。
- 某些在线平台或教育性质的比赛也可能采用类似的赛制,以降低选手的心理压力,鼓励尝试和探索。