NOI Linux 2.0 中有一个用于评测的工具 Arbiter。
感觉挺垃圾的。
启动
推荐在命令行中启动,这样闪退的时候可以看到错误信息。人机行为,有问题不报告,直接闪退是什么鬼?
对于正式测评,在题目准备时需要让所有题目空间限制一致。测评时将命令中的 unlimited 换为题目空间限制的千字节数(KiB),如:题目空间限制为 512 MiB,则命令为 ulimit -s $((512 * 1024))。导致这一问题的主要原因是直接启动 Arbiter,其父进程为 GNOME,子进程继承了父进程的栈空间限制。
摘自 OI-Wiki
命令行中输入 arbiter_local,或者输入一半,按 tab
自动补全。
创建
点击 New 按钮,创建一个文件,路径最好不要包含中文或是空格,否则可能会有未知错误。记住这个路径。
在试题列表中右键单击,点击添加考试,再右键点击“第一场–Day1”,点击添加试题。
点击出现的试题就可以进行配置,记得选择比较方式。
打开刚刚创建时输入的路径,里面有若干个文件夹。evaldata 是放测试数据的,players 是放选手程序的,result 是评测完之后自动生成的结果,filter 是校验器目录,里面是用于比较答案的程序。
点开 evaldata,把数据放到里面,不要 建立子文件夹!命名遵循:<文件名><id>.in,<文件名><id>.ans。注意后缀必须是 ans,必须和配置的试题名称一致。
如果后缀是 out,或者文件名不一样,可以选中全部文件,按 F2,会出现一个高级重命名工具,可以用于便捷地进行重命名。
打开 players,先建立一个文件夹 day1,在这个文件夹里面,建立选手的文件夹,选手文件夹中需要建立题目的子文件夹。注意是先建立 day1 文件夹。
然后打开试题评测,点击添加选手,名字和编号跟文件夹一样就行,不用搞那么麻烦。
左上角改成评测第 1 场,点击全选,然后点击评测选定选手。
结果
打开 result 文件夹,里面会显示每一个测试点的信息。
BUG
好多 BUG 呀这程序。
写文章时,发现 filter 文件夹是空的,导致没法使用校验器。仔细观察控制台输出,发现好像复制失败了,此时要去 /usr/local/arbiter/local/filter 路径下手动将校验器复制过来。
哎,无语了。
其它 BUG 只能看控制台输出了个啥,还有比赛配置文件及时保存,不然一闪退就要重新配置了,挺烦人的。