CodeForces比赛规则

来源:互联网 发布:知党规行敬畏 编辑:程序博客网 时间:2024/04/29 06:21

还有9个小时就要迎来人生第一次CF比赛了,百度发现没有很多关于CF的比赛规则,先从官网找到规则并翻译,水平有限,不妥之处,请自行脑补。

你可以在这里阅读完整的规则。

文本只包含 Codeforces 竞赛的初步规则–有一些规则肯定会改变。我特别希望能帮助社区找到规则中不合理的地方。不过,我们已经讨论过编程竞赛的形式,并进行了不分级测试——这些规则应该是可行的。

我们认为,在2个小时内完成5道题目是相当不错的。因此,在不久的将来我们不会改变它,但是有可能进行一些调整性的实验。

1.在比赛开始之前,所有的参赛者会被分配到不同的房间内,每个房间大约有20名参赛者。最初,这些分配可能是随机的,但是渐渐的,它会和你的评级有关联。

2.比赛开始看起来很像 icpc: 所有的问题都可以马上打开或者解决, 问题的描述很简单。选择问题并开始解答。参与者的目的是赚取尽可能多的分数。

3.问题的分数可由下表确定。例如, 如果问题 b 在10分钟比赛以后被解决了, 则它花费 1000-4 * 10 = 960 点。每次失败的提交将扣除50点分数。因此, 如果问题 b 在10分钟以后被解决了,并且是第三次提交, 则你可以得到 1000-4 * 10-2 * 50 = 860 点分数。然而, 不管你做了多少次尝试, 当你解决了问题, 你得到的分数都不会降到总分的30% 以下 (见 “最低得分 (30%)” 栏)。

问题 最高得分 最低得分(30%) 丢分(分/每分钟) 比赛结束时得分 A题 500 150 2 260 B题 1000 300 4 520 C题 1500 450 6 780 D题 2000 600 8 1040 E题 2500 750 10 1300

4.现在是你解决问题并提交的时候了。它将只在初步的测试用例上进行检查(我们称为“预测试”)。当然,预测试不会包含完整的测试数据。

5.一旦您提交的代码通过了所有预测试的数据,您将得到该问题对应的分数(见上文描述的公式)。你现在有了一个新的选择:如果你对你提交的方案的正确性有足够的自信,您就可以将本题“锁定”。一旦您将本题“锁定”,您将无法再重新提交本题。同时,你现在可以查看房间内其他人本道题提交的代码。

6.如果在比赛中, 您解决了问题, 并且已将其锁定, 您可以查看和尝试黑客的解决方案的参与者从您的房间。在黑客的过程中, 你可以提供一个测试 (或一个生成程序, 输出到标准输出), 黑客解决方案将无法正常工作。如果你的测试真的打破了黑客的解决方案, 那么它将成为 “黑客”, 它的作者将会失去它的分数。此外, 他/她将收到有关成功的黑客尝试的公告, 如果问题没有被他/她锁定, 作者可以修复解决方案并重新提交。但是, 虽然重新的解决方案将被判断不仅在前, 但在黑客测试 (s) 太。黑客的测试对受害者来说是未知的。

6.如果在比赛中,您解决了问题,并且已经将其锁定,您就可以查看并且尝试“hack”你房间内其他人本题提交的代码。在“hack”过程中,你可以提供一个你认为对方程序无法正确处理的测试用力。如果你提供的测试用例使得对方产生了错误的输出,那么你就成功完成了一次“hack”。对方将会失去本题得到的分数,并且得到被成功“hack”的通知。如果对方没有锁定本道题目,则他可以修改代码并且重新提交。但是重新提交时,不仅要通预测试的数据,也要通过刚刚被“hack”的数据。对受害者的“hack”测试是未知的。

7.任何“hack”的目标都是这个问题的最后一个被接受的提交。

8.您可以随时重新提交解决方案, 但可能会降低您的分数。如果重新提交成功 (即通过所有的预测试和以前被“hack”的数据), 就会发生这种情况。在这种情况下, 先前的成功尝试将被视为惩罚的理由 (见项目 3)。

9.在成功的“hack”尝试之后, 您将获得100分。

10.在失败的“hack”尝试之后, 您将失去50分。

11.如果您锁定了一个问题, 但您的解决方案已经被“hack”, 那么您仍然可以“hack”其他参与者的解决方案。

12.“hack”尝试应包含手动测试或测试生成程序 (生成器)。生成器是将测试输出到标准输出的程序。生成器应始终进行相同的测试, 例如, 不能使用当前时间初始化随机变量等。无论如何, 你必须非常严格地遵循测试的格式。每一行都应以换行符结尾。

13.“hack”操作可能会被忽略。这在一下几个情况下会发生: 测试是无效的, 生成器失败,受害者在被“hack”时重新提交了解决方案并且通过了本次的“hack”。

14.当然,在比赛中,禁止与其他参与者交流、分享想法、代码或“hack”。违反体育运动规则和个人道德会导致丧失比赛资格。上网查找资料、攻击系统安全、使用文件系统、攻击裁判等都是禁止的。简而言之,尊重自己和他人。

15.解决方案和测试生成器只能使用您完全自己编写的源代码, 但有以下两个例外:

1) 代码是在该比赛开始前编写和发布的,
2) 代码是使用在比赛开始之前编写和发布/分发的工具生成的。

任何 third-party 代码的使用不应违反权利持有人的许可证或版权。请记住, 发布的代码并不总是免费使用!在权利人的请求下, 任何违反许可或版权的代码都可以被视为违反规则。

代码中的所有更改从例外 1) 和/或 2) 必须由您单独作出。如果对出版时间、可能的合作等有任何疑问, 参与者必须出示令人信服的、令人满意的证据, 以证明他/她的清白。

目前, 唯一可靠的证据是在互联网上存在的代码和在著名的搜索引擎的缓存中使用的版本的存在。

例如, 如果代码是在圆的开始之前编写和发布/分发的, 则此规则接受网站 http://e-maxx.ru/的代码的使用。借助于搜索引擎缓存, 可以很容易地证明这样的代码并不违反规则。同样, 允许使用在竞赛前出版的书/文章中的代码。另一方面, 如果没有可靠和客观的方法证明代码是在竞赛之前编写的, 那么使用团队参考代码 (例如, 为 acm icpc 世界总决赛准备) 是不允许的。

这条规则不放宽关于禁止沟通, 讨论, 或任何其他形式的沟通的参赛者之间的任何主题的问题, 在整个回合。

16.解决方案代码混淆和创建障碍阅读和理解的解决方案是禁止的。禁止使用任何特殊的技术来使代码的读取复杂化, 从而了解其工作流程。

17.经过两个小时的娱乐比赛结束。对于每个参与者, 我们为每个问题选择后一种解决方案 (当然, 只有成功)。所有这些解决方案都 会在全部的测试数据上重新评判。因此, 某些解决方案会失败。比赛的最终结果是所有通过最终测试的解决方案的分数总和, 以及您在hack攻击时收到的分数 (或者反之

丢失的)。

所有, finita la comedia, 那就是, 游戏结束。

等待你的意见,

我刻意避免 “挑战” 一词。它不能被翻译成俄罗斯文, 也是因为 Topcoder 有独家的 “挑战阶段” 等。我要求你在讨论和评论中使用术语 “hack”。谢谢你的理解。