基本数据格式
题目文件夹结构
zip 文件内存储了配置文件、数据文件和其他文件。其结构如下:
problem.zip/ # “上传数据”需要的 zip 文件
配置文件 # problem.conf
数据文件
其他文件
配置文件包含了题目配置信息;数据文件为各个测试点的输入和输出文件;其他文件用于特殊题目的配置。
注意
在对题目数据进行压缩时,请选中题目文件夹内的所有文件,而不是选中题目文件夹本身。
配置文件 problem.conf
题目配置文件 problem.conf
为文本文件,其内容由多个配置项组成。所有配置项的名称各不相同。每个配置项占一行,格式为
<配置项名称><一个空格><配置项内容>
例如
n_tests 10
对于非特殊题目,下列基本配置项必须存在:
配置项名称 | 配置项定义 | 限制 |
---|---|---|
n_tests |
测试点个数 | [1,500] 之内的整数 |
input_pre |
输入文件名的前缀 | 长度在 [0,50] 之内的字符串 |
input_suf |
输入文件名的后缀 | 长度在 [0,50] 之内的字符串 |
output_pre |
答案文件名的前缀 | 长度在 [0,50] 之内的字符串 |
output_suf |
答案文件名的后缀 | 长度在 [0,50] 之内的字符串 |
time_limit |
时间限制(秒) | [0.001,20] 之内的实数 |
memory_limit |
内存限制(兆字节) | [1,2048] 之内的整数 |
use_builtin_checker |
内建比较器的名称 | 详见下文 |
对 input_pre
input_suf
output_pre
output_suf
的额外限制
- 不能包含
..
- 不能以
.
开头或结尾 - 只能包含这些字符:大小写字母(
a-z
A-Z
)、数字(0-9
)、减号(-
)、下划线(_
)、英文句号(.
)
上述配置项定义了一道传统题。该题具有 n_tests
个测试点,每个测试点满分为 100/n_tests
,时间限制为 time_limit
秒,内存限制为 memory_limit
兆字节。
每个测试点运行结束之后,评测系统将使用比较器来比较答案文件和选手的输出文件。评测鸭支持 testlib 的所有内建比较器,其名称和功能详见这里。
数据文件
数据文件即每个测试点的输入文件和答案文件。评测时,评测系统使用输入文件作为程序标准输入,并收集程序的标准输出到输出文件,然后比较答案文件和输出文件。单个数据文件的大小不得超过 100MB。
对于第 i (1<=i<=n_tests)
个测试点,输入文件名和答案文件名由下述 C 语言代码生成:
printf("%s%d.%s", input_pre, i, input_suf); // 输入文件名
printf("%s%d.%s", output_pre, i, output_suf); // 答案文件名
请保证每个测试点的输入文件和答案文件存在。
注意
请避免在输入文件或答案文件中包含 Windows 风格的换行符(\r\n
),否则某些基于 testlib
的比较器可能会发生错误,导致评测失败。
其他文件
其他文件用于特殊题目的配置。在非特殊题目中,它们无需存在。
题目配置样例
本节给出一个遵循基本数据格式配置的题目样例。
题目文件夹结构如下:
题目文件夹/
problem.conf # 题目配置文件
data[1-10].in # 各测试点的输入文件
data[1-10].ans # 各测试点的答案文件
problem.conf
如下:
n_tests 10
input_pre data
input_suf in
output_pre data
output_suf ans
time_limit 2
memory_limit 256
use_builtin_checker fcmp
该样例描述的题目为:
- 传统题
- 10 个测试点,每个测试点满分 10 分
- 时间限制 2 秒,内存限制 256 兆字节
- 使用内建比较器
fcmp
比较答案文件和选手的输出文件 - 各测试点的输入文件和答案文件分别为
data[1-10].in
和data[1-10].ans