CF出题的那些事

Ynoi

2021-05-20 08:14:33

Tech. & Eng.

如果你想出题的话,在众多OJ中,CodeForces算是一个选择。

树剖姐姐之前出过几场CF(Global Round 9,Global Round 13,Codeforces Round #732不过#732这一场因为我的题都被毙了 所以并没有我的题只是挂了个名),然后就打算写篇介绍一下CodeForces出题的流程。

然而,CodeForces出题并不一定是一个好选择,毕竟有以下缺点:

(update: 现在换了sponsor之后加钱了 div2 300美元,div1 600美元 GlobalRound 或者 CodeTON 900美元 现在钱多了一些 但相比洛谷月赛需要的题目数更多,想出题赚钱的话仍然不是很值)

不过,CodeForces出题也有一定的好处,因为CF比赛打的人多,大佬也多,所以你的题就可以被世界的神仙看到。以后你也可以吹牛说tourist做过你的题。你也可以借此机会涨一波 Contribution 结果unrated被downvote一堆

闲话不多说,先来讲讲出题的要求和流程

先决条件:CF rating \geq 2100,或者之前出过题。

其实以前的政策比较宽松的(Master以上 打过rated比赛5场,Candidate Master打过15场,Expert打过25场即可),不过后来改了。

如果你没有满足条件但是有很好的idea,可以联系CF管理员,不过这种渠道我也不甚了解,所以就不详细介绍了。

详情见此

一、提交审核 —— 按照流程来就可以了

如果你满足了先决条件,那么点击右边的propose a contest/problem开始出题。

就在这里:

点进去就是这个界面(然而你们如果没出过题下面就是空的)

然后点击这个红框框里的propose a contest 就可以准备比赛啦。

点完后就是这个界面qwq:

点完Create Proposal之后,你的比赛就放上去了!

点比赛标题进去编辑比赛

加题

你可以给同一个位置加多道题目,让审题人挑选。

之后点open to review提交审核

如果想撤回提交就点那个"Make it private"就好了。

二、确认赛题 —— 请做好心理准备

点完open to review,之后就提交审核了,一般等待一个月左右就会给你们的比赛分配审题人。

审题人出现的时候

这里就会显示Reviewers:和审题人的id。

审题人会在题目下面的comments里或者整场比赛的comments中评论对于题目的一些看法。

大致这个样子。

这个活动也是毙题的开始。审题人经常会说类似standard and not interesting(这里standard可以理解为太套路了),就说明这题被毙了。

关于毙题的话可能第一次出题的人会接受不了,但事实上被毙题是出题的常态。有时候审题人也会有一定的偏好(比如某些思维题正好审题人往那个方向想了就认为题目很简单)。如果你的题被毙了,但是您认为您的题依旧有价值,你可以先尝试和审题人沟通一下,说明您的题还是有价值的,审题人可能会重新考虑一下。但是我不建议审题意见强烈的时候仍然坚持,发生冲突也不好对吧,您可以考虑换个OJ投(当然有些质量并不好的题或者撞题就不要再投了)。

我遇到的CF审题都比较严的,不过也要看审题人,可能也有比较松的 不然怎么还有垃圾场

当大多数题都确定的时候,审题人会邀请你进入一个聊天软件(一般是discord或telegram)进行进一步沟通。

三、配置题目

当题目都出好后,下一步就是配置题目,把std,数据等配置好。

要求的平台是polygon

平台的用法可以参见这篇博客

有一些注意事项

题目配置完成之后请和审题人说一下,审题人会在issue里留下现存的一些问题,然后跟着修改就好了。

在这之后,你需要将题目统一到同一个比赛(polygon里有比赛功能)

四、验题

配置完成后,就是验题环节了。

审题人会给你一个链接,点进这个链接就可以进入验题赛了。

注意这个链接不要外传,防止泄题。

你可以将链接分享给一些人(最好是比较熟悉的)邀请来验题,验题建议使用VP的模式(就是让验题人提前打你的比赛),也建议邀请不同rating的人都来打,以便了解不同rating人赛时的体验,题目的区分度等等。

审题人也会亲自去找一些验题人,参与验题工作。

当然,审题人会要求验题人给与题目评价(比如就题目质量打分),如果有较多的验题人认为一个题不好,那么也是会毙掉的。(所以可以让自己请的验题人稍微说点好话,不过评价还是要真实客观的)。以及如果发现难度不合适,或者difficult gap太大,都有可能被要求换题。

五、准备比赛

当题目完全配置好,验题也结束了之后,就可以准备正式比赛了。此时你也要和审题人一起商量好每一个题的分数,以及,上writes的名单。

然后就愉快的准备比赛啦^_^

你需要准备一份Announcement,以blog的形式发表,可以复制粘贴以前比赛的Announcement,略微修改一下。Codeforces管理员会为您置顶。

给你们看一下出题人的比赛界面。

上面有比赛的修改界面,下面有选手提问界面(大多数都是英语提问,少数俄语提问建议找审题人)。

比赛时出题组一定要有人在场,最好全员在场,以应对选手的提问,以及突发情况如题目出错。

当然也可以赛时hack,将数据添加到system test里(比如GR13我们就hack了一份H的代码)

比赛结束后,出题组应该发出题解,并将比赛的Announcement中添加比赛的winner,题解链接等信息。

六、收钱

比赛结束后就等着拿钱了。

有可能会等待时间很长,支付方式要看情况。

最近受俄乌冲突影响,原有的通过美元的方式可能走不通,所以可能会以比特币等方式支付。

总之,耐心等待就好了。

七、结语,一些注意事项

推荐阅读一场CF的台前幕后,了解出比赛的心路历程(不过由于年代久远,相应流程已经发生了一些变化)

建议出题前先阅读OI出题指南,规避一些问题,提升自己的题目质量。

尽量尊重审题人,尽量不要发生冲突,自己的题目被毙了如果自己感觉题目还可以,可以出到别的OJ上,不要因为一些琐事导致比赛不能办。