算法比赛三大赛制介绍
点击上方蓝字
在介绍算法竞赛的三大赛制之前,先普及一些常见的竞赛术语:提交反馈,实时排名,按点给分,题数罚时,测试点(测试用例)等。
提交反馈:一般为“通过AC”、“答案错误”、“运行超时”之类的反馈
实时排名:比赛中能看到排名。
全对或全错:只有通过全部测试点才算通过,只要有一个测试点不通过就得不到分数
按点给分:每道题有多个测试点,通过几个测试点就给相应分值
题数罚时:题数多者排名靠前,只有当题数相同时才比较做题时间,做题时间少者排名靠前,做题时间跟罚时有关系。罚时是提交错误答案给予相应的惩罚,每提交一次若没通过则罚时相加。
一、ACM赛制
每道题提交之后都有反馈,但看不到错误的测试样例(leetcode周赛可以看到),每道题都有多个测试点,每道题必须通过了所有的测试点才算通过。每道题不限制提交次数,没通过的话会有罚时,比赛过程中可以看到实时排名,通过题数相同的情况下按照答题时间+罚时来排名。
ACM赛制的比赛有:ICPC、CCPC、codeforces、atcoder、leetcode周赛等。
ACM,全称为Association for Computing Machinery,美国计算机协会。因为最初几十年的国际大学生程序设计竞赛(International Collegiate Programming Contest,简称ICPC)是由美国计算机协会(ACM)赞助的,所以这个比赛被简称为ACM或ICPC或ACM-ICPC。后来虽然ACM不再赞助ICPC了,但是因为ACM已经被叫习惯了,所以这个简称仍然保留了下来,相应的赛制就叫做ACM赛制。
有些人可能对于“罚时”这个概念比较生疏,这里举两个例子来说明:
例1
张三、李四、王五参加了一场比赛,这场比赛共有两道题。张三在第10分钟一次性AC了第一道题,第50分钟一次性AC了第二道题。李四在第20分钟一次性AC了第一道题,第60分钟一次性AC了第二道题。王五在第20分钟一次性AC了第一道题,第二道题前两次提交没通过,在第50分钟时第三次提交并AC。则三人的排名如下:
排名 | 选手姓名 | 通过题数 | 罚时 | 第一题 | 第二题 |
1 | 张三 | 2 | 60 | 10 | 50 |
2 | 李四 | 2 | 80 | 20 | 60 |
3 | 王五 | 2 | 110 | 20 | 50 (-2) |
这里王五的第二题里有个(-2),表示他通过题目之前有过两次提交失败的记录,罚时2 * 20 = 40分钟。所以王五最终的总罚时为20 + 50 + 2 * 20 =110。
例2
下表是2019年11月23日举行的2019年广州市“智能创建及编程挑战”邀请赛初中组的最终排名。
第一行中的A(62/99)表示有99人挑战过这道题,最终62人成功。B(42/76)表示有76人挑战过这道题,最终42人成功。
排名第一的同学的罚时为522分钟,其计算过程为:9 + 19 + 34 + 142 + 163 + 54 = 421分钟,D题在通过之前失败过3次,F题在通过之前失败过2次,罚时5 * 20 = 100分钟。总罚时为421 + 100 = 521,与系统显示的522差了一分钟,是定时刷新页面引起的误差。
排名第二的同学的罚时为601分钟,其计算过程为:10 + 31 + 91 + 95 + 138 + 54 = 419分钟,前四题有9次提交失败的经历,罚时9 * 20 = 180分钟。总罚时为419 + 180 = 599,与系统显示的601差了两分钟,是定时刷新页面引起的误差。
排名第三的同学的罚时为315分钟,其计算过程为:7 + 12 + 72 + 76 + 46 = 213分钟,C题提交失败过4次,D题提交失败过1次,罚时5 * 20 = 100分钟。E题提交失败过5次,但是最终没能AC,所以不算时间。总罚时为213 + 100 = 313,与系统显示的315差了两分钟。
二、OI赛制
每道题提交之后都没有反馈,根据每道题通过的测试点的数量获得相应的分数。比如总共有10个测试点,总分100分,若通过其中的7个测试点,得分就是70分。每道题不限制提交次数,如果提交错误没有任何惩罚。因为后提交的代码会覆盖掉前面提交的代码,所以仅以最后一次提交为准。赛后按照总得分来排名。
OI赛制的比赛有:NOIP系列(包含CSP-J/S、NOI Online、省选、NOI、冬令营等)、考研机试、蓝桥杯等。
OI是Olympiad in Informatics的缩写。意思是信息学奥林匹克竞赛。
三、IOI赛制
每道题提交之后都有反馈,可以实时看到自己每道题得了多少分,但看不到错误的测试样例。每道题都有多个测试点,根据通过的测试点的数量获得相应的分数。每道题不限制提交次数,如果提交错误没有任何惩罚。比赛过程中一般可以看到实时排名,按照总得分来排名。每道题的得分取历次提交中的最高分。IOI赛制结合了OI赛制和ACM赛制的特点。
IOI赛制的比赛:IOI、浙江大学计算机程序设计能力考试PAT等。
IOI是International Olympiads in Informatics的缩写,意思是国际信息学奥林匹克竞赛。
【咨询信息学课程或加群】请扫码加微信
【算法视频讲解网址】
https://space.bilibili.com/17864349/video
【文章推荐】
【1】五大学科奥赛简介
【3】学科竞赛生的十条“军规”
【4】小朋友学C++之前需要先学Scratch和Python吗