Skip to content

数据点配置

关于 Tuack-NG 中数据点、样例、子任务及相关功能的配置。

要使用 Tuack-NG 的测试、生成数据等功能,必须先配置数据点。支持自动搜索和手动配置两种方式,两者互补。

自动搜索

bash
# 自动搜索样例
tuack-ng gen samples
# 自动搜索正式数据
tuack-ng gen data
# 自动搜索所有(样例 + 正式数据 + 测试代码)
tuack-ng gen all

注意

上述命令会将对应配置覆盖且不可恢复,建议在执行前进行备份。

自动搜索的详细行为见 生成工程 - gen data / samples / code / all

手动配置

数据点通过题目 conf.json 中的以下三个字段配置:

json
{
  "samples": [ /* ... */ ],
  "data": [ /* ... */ ],
  "subtasks": { /* ... */ }
}

样例数据点

samples 数组中的每个元素定义一个样例:

json
{
  "id": 1,
  "input": "1.in",
  "output": "1.ans",
  "dmk": "skip",
  "args": {}
}
字段类型说明
idinteger样例编号,一般从 1 开始
inputstring?输入文件名(相对于 sample/ 目录)。未设置时默认 {id}.in
outputstring?输出文件名(相对于 sample/ 目录)。未设置时默认 {id}.ans
dmkstring?数据生成行为,详见 生成配置
argsobject?生成器参数,详见 生成配置

样例在题面中的显示方式见 题面格式 - sample

正式数据点

data 数组中的每个元素定义一个正式数据点或数据点组。

单个数据点

json
{
  "id": 1,
  "score": 5,
  "input": "1.in",
  "output": "1.ans",
  "subtask": 0,
  "args": {},
  "dmk": "on"
}
字段类型说明
idinteger测试点编号
scoreinteger测试点分值
subtaskinteger所属子任务编号,默认 0
inputstring?输入文件名(相对于 data/ 目录)。未设置时默认 {id}.in
outputstring?输出文件名(相对于 data/ 目录)。未设置时默认 {id}.ans
argsobject?生成器参数,详见 生成配置
dmkstring?数据生成行为,详见 生成配置

数据点组

当多个测试点共享相同配置时,可用数组形式合并:

json
{
  "id": [2, 3, 4, 5],
  "score": 5,
  "subtask": 0,
  "args": {}
}
字段类型说明
idinteger[]测试点编号列表
scoreinteger每个测试点的分值(非总分)
subtaskinteger所属子任务编号

NOTE

数据点组不可设置 inputoutput 字段,文件名默认使用 {id}.in / {id}.ans

子任务

subtasks 字段使用键值对配置评分策略:

json
{
  "0": "sum",
  "1": "min",
  "2": "max"
}
说明
sum子任务总分为各测试点分数之和。最常用的评分方式
min子任务总分为各测试点分数的最小值。适用于捆绑测试/打包评测:一个点错则整个子任务不得分
max子任务总分为各测试点分数的最大值。较少使用

相关章节