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

趁着没退役赶紧学一波吧

配置

github下载地址

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

然后扔到MingW的目录里

直接引用就好啦

基本语法

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

inf:输入文件

ouf:选手输出

ans:标准输出

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

基本上就够用了。。。

一个简单的例子

#include "testlib.h"

// main 需要接收命令行参数
int main(int argc, char *argv[])
{
// 初始化 checker 环境 —— 解析命令行参数、打开文件……
registerTestlibCmd(argc, argv); // 三个全局变量 inf, ouf, ans 依次为输入、选手输出和参考输出
int pans = ouf.readInt(-, );
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 ;
}

运行

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

windows

checker <input-file> <output-file> <answer-file>

Linux

./checker <input-file> <output-file> <answer-file>

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

注意事项

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

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

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

zzq给了个解决方案Orz

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

自己写了个模板

#include "testlib.h"
#include<bits/stdc++.h>
using namespace std;
const int MAXN = + ;
void YES() {
quitf(_ok, "The ans is correct.");
}
void NO() {
quitf(_wa, "The ans is not correct.");
exit();
}
void readInf() { }
void readOuf() { }
void readAns() { }
int main(int argc, char *argv[]) {
registerTestlibCmd(argc, argv); readInf();
readOuf();
readAns(); return ;
}

板子

testlib.h从入门到入坟的更多相关文章

  1. 深度分析ReentrantLock源码及AQS源码,从入门到入坟,建议先收藏!

    一.ReentrantLock与AQS简介 在Java5.0之前,在协调对共享对象的访问时可以使用的机制只有synchronized和volatile.Java5.0增加了一种新的机制:Reentra ...

  2. SpringBoot整合SpringData JPA入门到入坟

    首先创建一个SpringBoot项目,目录结构如下: 在pom.xml中添加jpa依赖,其它所需依赖自行添加 <dependency> <groupId>org.springf ...

  3. SrpingBoot入门到入坟04-配置文件

    SpringBoot使用一个全局的配置文件,名称是固定,作用就是修改SpringBoot自动配置的默认值. *application.properties *application.yml 先看看两者 ...

  4. SrpingBoot入门到入坟03-基于idea快速创建SpringBoot应用

    先前先创建Maven项目然后依照官方文档再然后编写主程序写业务逻辑代码才建立好SpringBoot项目,这样太过麻烦,IDE都支持快速创建,下面基于idea: 使用Spring Initializer ...

  5. SrpingBoot入门到入坟02-HelloWorld的细节和初始自动配置

    关于SpringBoot的第一个HelloWorld的一些细节: 1.父项目 首先查看项目中的pom.xml文件 文件中有个父项目,点进去则: 它里面也有一个父项目,再点进去: 可以发现有很多的依赖版 ...

  6. SrpingBoot入门到入坟01-HelloWorld和SpringBoot打Jar包

    第一个SpringBoot: 建立一个maven项目: 再pom.xml里面增加依赖: <?xml version="1.0" encoding="UTF-8&qu ...

  7. nginx从入门到入坟

    目录 1.nginx下载安装 2.启动命令 3.服务脚本 4.nginx目录说明 5.nginx配置文件 6.虚拟主机与域名配置和站点配置 6.1server_name配置规则 7.反向代理负载均衡配 ...

  8. Python Web自动化测试入门与实战,从入门到入行

    Python Web自动化测试入门与实战 购买地址 · 京东:https://item.jd.com/69239480564.html   天猫:https://detail.tmall.com/it ...

  9. 音视频开发之H.264 入门知识

    大家如果有做过音视频相关的项目,那么肯定对 H.264 相关的概念了解的比较通透,这里我为什么还要写这样一篇文章呢?一来是为了对知识的总结,二来是为了给刚入门音视频的同学一个参考. 基础概念 H.26 ...

随机推荐

  1. 关于Tensorflow安装opencv和pygame

    1.安装opencv https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv C:\ProgramData\Anaconda3\Lib\site-pack ...

  2. Foxmail6.5 ERR LOGIN FAIL 重新输入口令

    这几天 Foxmail 6.5 收邮件不正常,一直报告ERR LOGIN FAIL,要求重新输入口令. 但输入正确的口令也无法收邮件. 反复折腾,最后发现如下设置即可: 邮箱账户设置 --> 邮 ...

  3. CSS3 阴影模拟灯照效果

    效果如下: 代码如下: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset= ...

  4. [Swift]LeetCode679. 24点游戏 | 24 Game

    You have 4 cards each containing a number from 1 to 9. You need to judge whether they could operated ...

  5. 小程序自定义pick(日期加时间组合)

    最近小程序有个需求要使用日期加时间的pick组件  翻了小程序文档似乎没有符合的 手写一个 新建组件picker.js: Component({ properties: { disabled: { t ...

  6. Python中的json模块

    在Python内置函数中,有一个eval()函数可以将字符串内容转换成Python对象,比如我现在将一个字典 dic = {"name":"pengfy"}写到 ...

  7. 十分钟通过 NPM 创建一个命令行工具

    大过年的,要不要写点代码压压惊?来花十分钟学一下怎么通过 NPM 构建一个命令行工具. 写了一个小 demo,用于代替 touch 的创建文件命令 touchme ,可以创建自带“佛祖保佑”注释的文件 ...

  8. 【烂笔头】adb命令篇

    1.一个自动安装SystemUI.apk的脚本文件push-SystemUI.bat: adb rootadb remountadb push ./SystemUI.apk system/priv-a ...

  9. Android中,粗暴的方式,修改字体

    序 在 Android 下使用自定义字体已经是一个比较常见的需求了,最近也做了个比较深入的研究. 那么按照惯例我又要出个一篇有关 Android 修改字体相关的文章,但是写下来发现内容还挺多的,所以我 ...

  10. Android--从系统Gallery获取图片

    前言 在Android应用中,经常有场景会需要使用到设备上存储的图片,而直接从路径中获取无疑是非常不便利的.所以一般推荐调用系统的Gallery应用,选择图片,然后使用它.本篇博客将讲解如何在Andr ...