Skip to content

Judging

dxx114514-stack edited this page Oct 1, 2026 · 2 revisions

评测机制

语言与编译

评测语言由提交文件的扩展名决定:

扩展名 编译 / 运行 说明
.cpp .cc .cxx g++ -O2 [-static] -o program Linux 评测需安装 g++
.c gcc -O2 [-static] -o program
.py python3(Windows 为 python) 免编译,按 PATH 解析解释器
.java javac -d <workdir> → java -cp <workdir> <MainClass> JVM 虚拟内存占用大,内存限力建议 ≥ 2048MB
.js node 免编译
其它 自定义语言(见 自定义评测语言) 未注册的扩展名评测为 CE(Unsupported language)
  • 编译命令中的 [-static] 仅 Windows 附加(platform::staticLinkFlag()),Linux 评测编译不加静态链接参数
  • 仅 answers_only 题型接受目录或 .zip 提交(逐文件比对同名答案)
  • 编译器本身在可信模式下运行,超时上限 judge.compile_time_limit_ms(默认 10000ms);选手代码在沙箱中执行(见 沙箱与安全)

题型(-type)

题型 说明
traditional 传统题:输入文件 → 标准输出
answers_only 答案文件题:接受目录或 zip,逐文件比对同名答案(扩展名 -answer-ext,默认 out)
interaction 交互题:选手程序与交互器(-interactor)双向通信
communication 通信题
communication_exec 通信题(执行模式)

比较模式(-compare)

模式 语义
text_strict 逐字节严格比较(CRLF/LF 归一化),默认
text_line 逐行比较(忽略行末空白);答案还有内容而选手先结束 → WA,反之 → OLE
text_no_space 忽略空白按 token 比较;token 全等但行结构不同 → PE,多余内容 → OLE
float_abs 实数绝对误差(超出 -float-abs 判错;未设容差默认 1e-6)
float_rel 实数相对误差(相对标准答案;未设容差默认 1e-6)
float_all 综合误差:`
spj 自定义 SPJ:argv = (输入, 选手输出, 标准输出),exit 0 → AC 否则 WA,超时 → ST
spj_lemon LemonLime 6 参数 SPJ(额外 fullScore/scoreFile/msgFile),按分值判 AC/PC/WA
spj_testlib testlib SPJ:解析 stderr 的 ok / partially correct (N) / points X 等

非 text_strict 的比较模式会自动把题型置为 traditional(-type 在其后解析,可覆盖)。

text_strict 是逐字节比对:测试数据与标准答案文件的最后一个换行符也必须一致,否则 WA。

子任务

  • 计分聚合(-subtask-mode):simple / group = 求和;all_or_nothing = 取最小分
  • 依赖(-dependence,JSON 如 {"2": [1]}):依赖子任务得 0 或 SKIPPED → 被依赖者 SKIPPED;依赖部分得分 → 按比例封顶

评测设置(data/config.json 的 "judge" 段)

键 默认 说明
compile_time_limit_ms 10000 编译超时
special_judge_time_limit_ms 10000 SPJ / 交互进程超时
source_size_limit_kb 50 源代码大小上限
rejudge_times 1 边界 TLE 自动重评测次数(0..12)
max_rejudge_times 12 手动 rejudge 允许的最大评测次数
max_judging_threads 4 并行评测线程数
extra_time_ratio 0.1 额外时间比(贴线 TLE 缓冲)
file_write_limit_kb 16384 子进程写文件大小上限
env {} 追加给子进程的环境变量
custom_languages 内置 judgelang 自定义评测语言注册表(见 自定义评测语言)

测试点生成器

题目可附带生成器(-generator 源码内嵌或 -generator-exe 外部可执行文件):每次评测前按测试点编号运行,把结果写入该测试点的 data.in / data.out。占位测试点(create - -)即由生成器产出数据。

  • 生成器固定限制 10s 墙钟 / 1024MB 内存(可信模式、可写工作目录);生成失败或未写出 data.in / data.out → 该测试点判 SE(System Error: generator failed on test point N: …)
  • answers_only 题型与交互题(交互器就绪)不运行生成器(communication_exec 照常运行)
  • 选手源码超过 judge.source_size_limit_kb(默认 50 KB)→ 判 CE(Source file too large (limit 50 KB));可执行文件提交与 answers_only 目录提交跳过该检查

重新评测

clijudge submit rejudge <提交编号>

受 judge.max_rejudge_times(默认 12)限制,源文件必须仍存在。另有自动重评测:边界 TLE 按 rejudge_times(默认 1)自动复跑。


返回 Home

Clone this wiki locally