前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >testlib.h从入门到入坟

testlib.h从入门到入坟

作者头像
attack
发布2018-09-30 09:56:19
1.7K0
发布2018-09-30 09:56:19
举报
文章被收录于专栏:数据结构与算法

学了这么久OI连个spj都不会写真是惭愧啊。。。

趁着没退役赶紧学一波吧

配置

github下载地址

我是直接暴力复制粘贴的。。

然后扔到MingW的目录里

直接引用就好啦

基本语法

引用testlib.h后,我们可以从三个地方读入数据

inf:输入文件 ouf:选手输出 ans:标准输出

当然,肯定不能直接用scanf读入,testlib里内置了很多读入函数

基本上就够用了。。。

一个简单的例子

代码语言:javascript
复制
#include "testlib.h"

// main 需要接收命令行参数
int main(int argc, char *argv[])
{
    // 初始化 checker 环境 —— 解析命令行参数、打开文件……
    registerTestlibCmd(argc, argv);

    // 三个全局变量 inf, ouf, ans 依次为输入、选手输出和参考输出
    int pans = ouf.readInt(-2000, 2000);
    int jans = ans.readInt();

    if (pans == jans)
        quitf(_ok, "The sum is correct.");
    else
        quitf(_wa, "The sum is wrong: expected = %d, found = %d", jans, pans);

    return 0;
}

运行

运行的时候需要切换到checker所在的目录,输入以下命令

windows

代码语言:javascript
复制
checker <input-file> <output-file> <answer-file>

Linux

代码语言:javascript
复制
./checker <input-file> <output-file> <answer-file>

根据输出结果可以判断程序的对错

注意事项

写这篇文章主要是为了记一下容易翻车的地方。。

  • 读入的时候必须把三个文件里的内容都读完,不然会出现

如果全都读完后仍然显示这个。。。。

zzq给了个解决方案Orz

  •  checker内尽量不要出现中文字符,不然上传到某些OJ的时候可能会出BUG

 自己写了个模板

代码语言:javascript
复制
#include "testlib.h"
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1005 + 10; 
void YES() {
    quitf(_ok, "The ans is correct.");
}
void NO() {
    quitf(_wa, "The ans is not correct.");
    exit(0);
}
void readInf() {

}
void readOuf() {

}
void readAns() {

}
int main(int argc, char *argv[]) {
    registerTestlibCmd(argc, argv);
    
    readInf();
    readOuf();
    readAns();
    

    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-09-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 配置
  • 基本语法
  • 运行
  • 注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档