docs/tools/testlib/validator.md
前置知识:通用
本页面将简要介绍 validator 的概念与用法.
Validator(中文:校验器)用于检验造好的数据的合法性.当造好一道题的数据,又担心数据不合法(不符合题目的限制条件:上溢、图不连通、不是树……)时,出题者通常会借助 validator 来检查.1
因为 Coderforces 支持 hack 功能,所以所有 Codeforces 上的题目都必须要有 validator.UOJ 也如此.Polygon 内建了对 validator 的支持.
直接在命令行输入 ./val 即可.数据通过 stdin 输入.如果想从文件输入可 ./val < a.in.
若数据没有问题,则什么都不会输出且返回 0;否则会输出错误信息并返回一个非 0 值.
inf.readEof().以下是 CF Gym 100541A - Stock Market 的 validator:
#include "testlib.h"
int main(int argc, char* argv[]) {
registerValidation(argc, argv);
int testCount = inf.readInt(1, 10, "testCount");
inf.readEoln();
for (int i = 0; i < testCount; i++) {
int n = inf.readInt(1, 100, "n");
inf.readSpace();
inf.readInt(1, 1000000, "w");
inf.readEoln();
for (int i = 0; i < n; ++i) {
inf.readInt(1, 1000, "p_i");
if (i < n - 1) inf.readSpace();
}
inf.readEoln();
}
inf.readEof();
}