引入
目前,编程竞赛的平台有很多,有洛谷, codeforces,atcoder等。这些不同的平台都是有不同的规则和竞赛方式,但是它们的不同只限于对个人分数的评判。也就是说,这些和考试没什么区别,只不过可以在赛时看到别人的得分。
唯一的和其他平台不同的就是 codeforces。CF 可以在赛时 hack 同房间的人,并且 hack 成功还可以获得一定分数。但是这种 hack 的影响并不大,一个房间里能通过测试数据还有错的并不多,你需要在许多代码中找到这样一份代码,而且这种 Bug 一般都是很隐蔽的。所以,想要 hack 别人很难。不妨随便去看某一场 CF,你会发现 hack 成功的很少。
比如上图,一场 div.2 里面只有 2 个成功的 hack。
我的想法是创造一个新赛制,有体育竞技的对抗性,并且 hack 是比赛的主要部分。它的名字叫 HC(hack code)。
基本介绍
这种赛制,由两个人(队伍)进行对抗。比赛分为两部分,前一部分是 code 时间,后一部分是 hack 时间。在 code 时间,双方需要完成比赛的题目,并且提交。接下来是 hack 时间,双方可以看到对方的代码,然后进行多次 hack(提交符合题目要求的输入数据,让对方的程序变慢)。双方的评判为被 hack 的最差的结果,评判较低的将获胜。
评判机制
评判( T T T)的结果由运行时间( T r T_r Tr)和 hack 时间( T s T_s Ts)两部分组成。
T = ∑ i = 1 n T r i + T s i T=\sum_{i = 1}^n T_{r_i} + T_{s_i} T=i=1∑nTri+Tsi
其中 n n n 为题目数量。
运行时间
这里的运行时间越精确越好,时限 1s 的题,精度最好可以到 ms。
对于比赛只有一个题目的, T r i T_{r_i} Tr