跳转至

基本数据格式

题目文件夹结构

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].indata[1-10].ans