dingyuxiao99
2018-10-19 22:26:55
NOIP又要到了,你还在为比赛后批量评测代码而发愁吗?你还在为校内组织模拟赛没法统一评测而苦恼吗?Cena用户当我什么都没说你还在对着没有任何文档的Arbiter评测系统发愁吗?现在好了,有了这篇教程,让你轻松完成大量代码评测顺带偷瞄一眼其他大佬的成绩.
Arbiter预装于NOI Linux,可以用于比赛代码的批量离线评测,适用于希望完全重现NOIP评测机的比赛评测,以及希望组织比赛时断网后统一评测,是非常优秀的解决方案(虽然不提供独立安装包不跨平台不提供文档).当然你也可以选择替代品Project Lemon和Cena,使用起来也很得心应手.
Hint:在比较方式的选择上,建议采用字符串比较-多行单字符串,这种比较方式通常可以应对绝大多数OI题目,如果题目有特殊要求可以选择其他方式,当然Arbiter也提供自己编写比较方式的功能,大家可以自行造轮子百度了解比较方式.以及编译选项中一定要跟上-lm
以保证和NOIP完全一致.下图以phalanx
为例,介绍如何配置一个可以正常评测的题目:
到这里,我们已经完成了Arbiter题目的配置了,保存一下比赛后,开始将评测数据、选手代码以及选手信息放在正确的地方.
这里图片有点模糊我自己差点都看不清楚了,介绍一下目录下所有文件/文件夹的功能:
evaldata
文件夹中,不能包含任何子文件夹,且保证输入数据的扩展名为problemX.in,输出数据的扩展名为problemX.ans;vlookup()
完成合并.切记,完成以上操作前后都必须保证Arbiter已经关闭,否则可能带来一些不可预料的后果
再次打开Arbiter,打开比赛,会让你去选择setup.cfg文件,Arbiter自动读取所有配置,以及你添加进来的选手信息、代码以及测试数据.
Hint:开始大规模评测之前,强烈建议再次检查相关配置是否正确,并选择一个选手进行试评测,得到结果后与手动编译测试后的结果进行对比,如果评测日志中没有出现与手动结果差异太大的结果则可开始.
全选选手,点击评测,泡一杯茶并打开崩崩崩静候评测结束.之后导出csv,获取最终结果.
如果对评测结果有任何疑问,可以去Contests/result/dayX/PlayerX/对应题目下查看评测日志,Arbiter针对每一个点的评测都有详细的日志记录.
到这里整篇教程就结束了,但是我还是要强调的是,因为NOI Linux是基于Ubuntu 14.04 LTS x86进行的魔改,精简过程中删除掉了部分驱动以及运行库,如果在虚拟机中使用可能会遇到OpenVM Tools无法安装的情况,建议使用SCP或者其他方法进行文件传输(在VMware Workstation Pro v14上把U盘挂载到虚拟机中无法识别,至少在写这篇文章的机器上挂载失败了,未验证后续版本是否修复).