一场BC的台前幕后

 #define BC BestCoder

一场BC的台前幕后

起源大概是这样的:一个月前的BC#75结束后,AK的人非常多,于是CodeVS群里很多人吐槽BC#75的质量,这时YJQ对KPM说:“我们来出一场BC吧!”恰好最近屯了几个原创,并且发现给BC出比赛居然有钱拿,而且还不少,而给CodeVS出比赛就没钱拿,虽然说好有奖品但是奖品一直没有出现,于是我就萌生了给BC出题的想法。然后又觉得一个人搞不是很靠谱,就把Hillan爷拉进出题的队伍。

然后就先开始做题面。我直接从我之前屯的那些原创里面挑出几个给Hillan爷看,Hillan爷觉得还可以。于是AB_CE就立即有了。然后Hillan爷提供了一个D。然后我觉得A太难了,于是就换了一个很水的题。至此题面就告成了。

接下来是标程。由于我的那些题之前也是准备过的,再把新的A题水掉之后,就只差Hillan爷的D题了。然后Hillan爷说有点麻烦让我写,然而我太弱了,只写出了一个复杂度多个log的暴力。于是被Hillan爷疯狂嘲讽,因此标算是Hillan爷打的。然后E题Hillan爷为了帮我验数据也打了一个,结果速度是我的两倍,果然是我太弱了。因为时限必须定在出题人的某常数倍以上,因此我准备拿Hillan爷的程序当标程。

然后开始造数据,A题因为本来就是要送分我就直接手打了,B题纯随机一下也没事,C题稍微构造了一下,E题也花了些时间构造了不少各种类型的数据防止水过。Hillan爷的D题也是直接随机一下就好了。至此数据完毕。突然得知pretest和final test都只能各有一组输入输出文件,然后我又怕给E题加多组数据时限过大,于是虽然C题补加了多组数据,但是E题我只是挑出了一个认为最强的数据来作为final test。

然后看了下比赛命题注意事项,发现为了支持hack模块,必须写输入数据验证程序。然后并不知道传说中的testlib.h是怎样的,尽管在阅读vfk《一场CF的台前幕后》时了解到这东西。而且也不知道整个格式应该是怎样的。然后发现有个QQ联系方式,就加了,然后就拿到了一个比赛命题模板。然后发现其实很容易写的,于是就很快就写完了。

突然发现还有英文题面。在英语大神的指导下,我完成了翻译,并且给Hillan爷的英语老师看了一下,然后改了一堆错误。

至此大概就搞定了,于是和BC管理员定好了时间,BC#79,4月9日。

然后就是大概两个星期的等待,期间有少数几次更新。

 

BC#78之前几天,BC管理员给我开了测试场,让我把题目加进去,并且做一些提交测试。

BC#78结束后,BC首页上就挂出了BC#79的报名链接。

第二天,BC管理员拉我进了验题群,并且在群里公布了测试场链接。

三天后,终于出现了我进群之后的第二句消息:“这套题会不会……太难了……另:难度预期标杆:xxx。”其中xxx是BC#75的链接。

然而如果再出得和BC#75一样水肯定还是要被吐槽的吧。

然后发现E题描述弄错了,赶紧更正。

这时又有人说B题太难了,我就说代码除了读入输出就两行啊,然后就被疯狂嘲讽:“难道评定题目难度只有代码长度一个参数?逗我。”

然后我承认这题的思考难度确实太大,就扔出了一个备用的比较简单的题,公认难度不算太大。然后在Claris的要求下,我还是给E题搞了多组数据。这时突然发现尽管多组数据,但是还是跑的很快,时限不必很高。然后又论了论B题的难度,群里就渐渐没消息了。

 

一晃就到了比赛当晚。19点整,比赛开始。

花絮:在div2中,一堆人在Clarification里表示不太清楚题意,怎么这么多人都认为正多边形内角和是360°,你们的数学是体育老师教的吗?

3分27秒,div2首个人过A。5分钟内,11人过A。6分钟内,27人过A。7分钟内,47人过A。8分钟内,67人过A。9分钟内,101人过A。10分钟内,123人过A。15分钟内,241人过A。20分钟,377人过A。总之增长速度极快,一定程度上超出了我的想象。

然而div2居然没人过B……此时有人在验题群里吐槽了:B题确实太难了吧。

div1的情况也好不到哪儿去:8分54秒,首个人过B。10分50秒后,首个人过C。25分18秒后,首个人过D。只看这些信息似乎很好,然而事实是前30分钟也只有12人次AC……

然后我也意识到B题真的难了,这就导致div2一堆人过A之后卡死,而div1一堆人看题跑。

26分43秒,div2首个人过B。接下来34分30秒,36分59秒,41分06秒……陆续有人过B,但是比过A的记录不知道稀疏到哪儿去了,结果1小时内只有10个人过B。最终也只有27个人过B。

有意思的是,在div2中,41分36秒,首个人过D,45分13秒,第二个人过D,而56分43秒才有人过C,最终也只有8个人过D,但是过C的人更是少得可怜:3个。因此验题群有人说,D题是不是比C题还简单。

再看看div1,似乎稍微有趣一些,做题分布比较杂,过AB_C的都有一些:40分钟内,15人过B,8人过C,4人过D。1小时内,33人过B,15人过C,7人过D。

激动人心的事情发生了,有人过了E!然而又突然看到他在Clarification里面问E题的pretest有几组数据,说自己怕TLE。于是我看了看他的E跑了4800ms,而final test的数据量是pretest的1.5倍。不过他写的似乎是三个log的算法,被卡掉也是应该的吧。

 

一晃比赛就结束了。突然发现D题时限设置错误,一堆人被卡常,好像只有一个人过,而且那个人和时限只差了100ms不到……改正后,通过率就正常了。有人的写法和我之前写的暴力一样,多了个log,还是被卡掉了。

div2最终结果:第一名AK,第二名和第三名过了AB_C,第四名过了ABD,第五名到第七名过了AD,第八名过了AB并hack成功4次,强行超越过了AD的第九名,第10名到第14名过了AB,第15名挤进来一个只过了D的,然后第16名到第30名过了AB,第31名又挤进来一个只过了D的,第32名过了AB,第33名过了B,然后第34名到第597名都是只过A的……这就是B题太难的后果,把强行让后面一大堆人拼手速。然后最后有6个没过任何题目却hack成功几次的,再往后就是爆零的了。

div1大概是聚集了一些精英,情况尚好:第一名AK,第二名到第七名过了AB_C,第八名过了B_C,第九名过了AB,第10名过了B_C,第11名过了AB,第12名过了AC,第13名到第18名过了AB,第19名和第20名只过了C,第21名到第23名只过了B,然后第24名到第69名里面除了第27名,第39名,第61名只过了B,其他都是只过了A,再后面就是爆零的了。

著名选手uwi好像被我坑得不浅,居然没过任何题目……结果掉到了BC总榜第4。然后我突然发现,BC总榜的第4名和第10名只差15分,非常挤……

总之一场BC就这样结束了。我的B_CE都是准备了很久的题,然后临时出A、翻译题面、造数据、写输入数据验证程序,也占用了我近一个星期内每天下午和晚上的时间,但是这场比赛只进行了两小时。当然,多于两个小时的努力,才值得数百人欣赏两小时。

评论

此博客中的热门博文

将博客部署到星际文件系统(IPFS)

一场CF的台前幕后(下)

Excerpts from「the SCP Foundation」