Ynoi
2021-05-20 08:14:33
如果你想出题的话,在众多OJ中,CodeForces算是一个选择。
树剖姐姐之前出过几场CF(Global Round 9,Global Round 13,Codeforces Round #732不过#732这一场因为我的题都被毙了 所以并没有我的题只是挂了个名),然后就打算写篇介绍一下CodeForces出题的流程。
然而,CodeForces出题并不一定是一个好选择,毕竟有以下缺点:
(update: 现在换了sponsor之后加钱了 div2 300美元,div1 600美元 GlobalRound 或者 CodeTON 900美元 现在钱多了一些 但相比洛谷月赛需要的题目数更多,想出题赚钱的话仍然不是很值)
准备周期长,记得我们的Global Round13从2020年3月就一直开始准备但是直到2021年2月末才开始。而且审题人一般都是鸽子,发钱也慢(Global Round9的钱GlobalRound13结束了才拿到然后美元还贬值了,都怪美国乱印钱)。
题面需要英语写 像我这种英语菜鸡就很惨。
审核严格,我们当年准备了十几个C题。。。。。。
不过,CodeForces出题也有一定的好处,因为CF比赛打的人多,大佬也多,所以你的题就可以被世界的神仙看到。以后你也可以吹牛说tourist做过你的题。你也可以借此机会涨一波 Contribution 结果unrated被downvote一堆。
闲话不多说,先来讲讲出题的要求和流程
先决条件:CF rating
其实以前的政策比较宽松的(
如果你没有满足条件但是有很好的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
平台的用法可以参见这篇博客
有一些注意事项
Validator 一定要写,因为要判定hack数据的合法性。另外我当年在出CometOJ的时候,Dreamoon哥哥告诉我哪怕不是出CF也建议写Validator,因为这样可以避免一不小心输入数据不合法,这样的惨案也能避免发生。
记得给审题人加上权限(加权限的方法那篇博客里有)
数据请不要在本地生成之后上传,否则将会产生一个很大的包,严重影响效率。应当使用Generator,并且并非每个点一个Generator,而是同一类数据用同一Generator,将参数传入即可。随机数也不宜使用rand(),而是testlib里的,以保证不同环境下产生的数据相同 oi-wiki有详细的讲解
题目配置完成之后请和审题人说一下,审题人会在issue里留下现存的一些问题,然后跟着修改就好了。
在这之后,你需要将题目统一到同一个比赛(polygon里有比赛功能)
配置完成后,就是验题环节了。
审题人会给你一个链接,点进这个链接就可以进入验题赛了。
注意这个链接不要外传,防止泄题。
你可以将链接分享给一些人(最好是比较熟悉的)邀请来验题,验题建议使用VP的模式(就是让验题人提前打你的比赛),也建议邀请不同rating的人都来打,以便了解不同rating人赛时的体验,题目的区分度等等。
审题人也会亲自去找一些验题人,参与验题工作。
当然,审题人会要求验题人给与题目评价(比如就题目质量打分),如果有较多的验题人认为一个题不好,那么也是会毙掉的。(所以可以让自己请的验题人稍微说点好话,不过评价还是要真实客观的)。以及如果发现难度不合适,或者difficult gap太大,都有可能被要求换题。
当题目完全配置好,验题也结束了之后,就可以准备正式比赛了。此时你也要和审题人一起商量好每一个题的分数,以及,上writes的名单。
然后就愉快的准备比赛啦^_^
你需要准备一份Announcement,以blog的形式发表,可以复制粘贴以前比赛的Announcement,略微修改一下。Codeforces管理员会为您置顶。
给你们看一下出题人的比赛界面。
上面有比赛的修改界面,下面有选手提问界面(大多数都是英语提问,少数俄语提问建议找审题人)。
比赛时出题组一定要有人在场,最好全员在场,以应对选手的提问,以及突发情况如题目出错。
当然也可以赛时hack,将数据添加到system test里(比如GR13我们就hack了一份H的代码)
比赛结束后,出题组应该发出题解,并将比赛的Announcement中添加比赛的winner,题解链接等信息。
比赛结束后就等着拿钱了。
有可能会等待时间很长,支付方式要看情况。
最近受俄乌冲突影响,原有的通过美元的方式可能走不通,所以可能会以比特币等方式支付。
总之,耐心等待就好了。
推荐阅读一场CF的台前幕后,了解出比赛的心路历程(不过由于年代久远,相应流程已经发生了一些变化)
建议出题前先阅读OI出题指南,规避一些问题,提升自己的题目质量。
尽量尊重审题人,尽量不要发生冲突,自己的题目被毙了如果自己感觉题目还可以,可以出到别的OJ上,不要因为一些琐事导致比赛不能办。