domjudge题目配置和开比赛

系统使用的是7.3.3,domjudge配置的方法请参考前文

domjudge配置-CSDN博客

题目导入

传统比较

首先可以去domjudge中随便下载一个题目,下载下来的压缩包应该是这样的

│  domjudge-problem.ini
│  problem.pdf
│  problem.yaml
│
└─data
    └─secret
            1.ans
            1.in
            2.ans
            2.in
            3.ans
            3.in

problem.pdf为题面,没测试过别的,根据参考博客还有一个html格式,没测试过

domjudge-problem.ini,存放该题的评测细节,如果是传统题,里面只有时限,第二个颜色改不改都没有什么影响,可以根据他法气球颜色等

domjudge题目配置和开比赛_第1张图片

problem.yaml,存放该题的评测细节,如果是传统题,里面应该只有题目名字和内存限制(单位MB),name是题目的名字,memory是内存限制

domjudge题目配置和开比赛_第2张图片

 在/data/secret 中存放测试数据,同一对.in 和 .ans,作为一组测试数据

/data/sample,存放样例数据,但是我不太需要

修改完成,将数据打包成zip上传到domjudge

特判题目

特判题目的格式如下

│  domjudge-problem.ini
│  problem.yaml
├─data
│  └─secret
│          000.ans
│          000.in
│          001.ans
│          001.in
│          example0.ans
│          example0.in
│          example1.ans
│          example1.in
│
└─output_validators
    └─validate
            checker.cpp
            testlib.h

需要在problem.yaml 中添加一行内容 validation: custom,如下

# Problem exported by DOMjudge on 2021-12-11T13:38:57+01:00
name: 'Ball?'
validation: custom
limits:
    memory: 512

特判文件中的testlib.h可以从下边下载

cn-xcpc-tools/testlib-for-domjudge: testlib for domjudge (github.com)

至于怎么写特判,可以看一下洛谷上的特判书写规则

Special Judge 功能说明 | 洛谷帮助中心 (luogu.com.cn)

还有一种是交互题目,交互题的话,我暂时不知道怎么出题和上传到平台,如有大佬欢迎补充。

账号的导入

使用管理员账号登陆之后可以手动一个一个账号的添加,一个队伍一个队伍的添加,如果说队伍数量较少,你这样手动添加的话还是可以理解的,但是如果有几百几十个队伍的话,这样手动添加就会增加很大的工作量,所以我们可以选择批量导入账号信息

先导入 teams.tsv 再导入 accounts.tsv

tsv文件时每列直接使用 tab 间隔,但是excel并不是,所有我们可以在excel中将信息输入完成后,将其全选复制到tsv文件中

teams.tsv

teams	1
6	acmteam_001	3	team001	LDUniversity	LD	CHN	LD

第一行固定的不需要修改

第二行开始就是每一列的信息分表表示如下内容

唯一的队伍ID\t	唯一的外部ID\t	team_category的ID\t	队名\t	校名\t	校名(短)\t	国家\t	唯一的校名外部ID

唯一的队伍ID就是后台显示队伍ID(可以是任意一个,只要不冲突),唯一的尾部ID就是后台显示的 ICPC ID,team_category的ID固定为3,为参赛选手的意思。 

accounts.tsv

accounts	1
team	lduacm_001	lduacm_006	AFhs5lxwm

第一行固定不需要修改

第二行的意思如下

角色(team, admin等)\t	名字\t	username\t	password

角色固定为team,名字就是正常的用户名字,username就是登陆时间的账户名字,密码就是你设置的,可以使用一些手段给他随机生成一下

accounts在导入时间会根据username去自动挂在队伍的ID,跳过username前面的非数字字符,在跳过 0 以后,剩下的数字字符作为对应的队伍ID(剩下的不是数字就不挂队伍了,),对应的源码如下:

$teamid = preg_replace('/^[^0-9]*0*([0-9]+)$/', '\1', $line[2]);

比赛的开启

比赛就可以直接在admin账号下进行设置,开始比赛,设置活动开始时间,比赛开始时间,封榜时间,比赛结束时间,解榜时间,比赛终止时间等信息,在将以上的题目拉取等

结语

通过以上两篇博客就可以开启一场比赛,可以手动创建一些气球派送者的角色、榜单的角色、judgehost的角色,api的角色一般用来配置icpctool的等有待考察

对于ACMer来说,赛后的滚榜也是非常有趣的环节

滚榜配置:

你可能感兴趣的:(算法,数据结构)