testlib.h从入门到入坟
学了这么久OI连个spj都不会写真是惭愧啊。。。
趁着没退役赶紧学一波吧
配置
我是直接暴力复制粘贴的。。
然后扔到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从入门到入坟的更多相关文章
- 深度分析ReentrantLock源码及AQS源码,从入门到入坟,建议先收藏!
一.ReentrantLock与AQS简介 在Java5.0之前,在协调对共享对象的访问时可以使用的机制只有synchronized和volatile.Java5.0增加了一种新的机制:Reentra ...
- SpringBoot整合SpringData JPA入门到入坟
首先创建一个SpringBoot项目,目录结构如下: 在pom.xml中添加jpa依赖,其它所需依赖自行添加 <dependency> <groupId>org.springf ...
- SrpingBoot入门到入坟04-配置文件
SpringBoot使用一个全局的配置文件,名称是固定,作用就是修改SpringBoot自动配置的默认值. *application.properties *application.yml 先看看两者 ...
- SrpingBoot入门到入坟03-基于idea快速创建SpringBoot应用
先前先创建Maven项目然后依照官方文档再然后编写主程序写业务逻辑代码才建立好SpringBoot项目,这样太过麻烦,IDE都支持快速创建,下面基于idea: 使用Spring Initializer ...
- SrpingBoot入门到入坟02-HelloWorld的细节和初始自动配置
关于SpringBoot的第一个HelloWorld的一些细节: 1.父项目 首先查看项目中的pom.xml文件 文件中有个父项目,点进去则: 它里面也有一个父项目,再点进去: 可以发现有很多的依赖版 ...
- SrpingBoot入门到入坟01-HelloWorld和SpringBoot打Jar包
第一个SpringBoot: 建立一个maven项目: 再pom.xml里面增加依赖: <?xml version="1.0" encoding="UTF-8&qu ...
- nginx从入门到入坟
目录 1.nginx下载安装 2.启动命令 3.服务脚本 4.nginx目录说明 5.nginx配置文件 6.虚拟主机与域名配置和站点配置 6.1server_name配置规则 7.反向代理负载均衡配 ...
- Python Web自动化测试入门与实战,从入门到入行
Python Web自动化测试入门与实战 购买地址 · 京东:https://item.jd.com/69239480564.html 天猫:https://detail.tmall.com/it ...
- 音视频开发之H.264 入门知识
大家如果有做过音视频相关的项目,那么肯定对 H.264 相关的概念了解的比较通透,这里我为什么还要写这样一篇文章呢?一来是为了对知识的总结,二来是为了给刚入门音视频的同学一个参考. 基础概念 H.26 ...
随机推荐
- 【XSS】利用 onload 事件监控流量劫持
说到跨站资源监控,首先会联想到『Content Security Policy』.既然 CSP 好用,我们何必自己再搞一套呢.那就先来吐槽下 CSP 的缺陷. 目前的 CSP 日志不详细 用过 CSP ...
- Spring Boot 实现 RabbitMQ 延迟消费和延迟重试队列
本文主要摘录自:详细介绍Spring Boot + RabbitMQ实现延迟队列 并增加了自己的一些理解,记录下来,以便日后查阅. 项目源码: spring-boot-rabbitmq-delay-q ...
- 【转载】看StackOverflow如何用25台服务器撑起5.6亿的月PV
问答社区网络 StackExchange 由 100 多个网站构成,其中包括了 Alexa 排名第 54 的 StackOverflow.StackExchang 有 400 万用户,每月 5.6 亿 ...
- Nginx实现集群服务器的负载均衡
1.安装nginx和tomcat 我这里是使用docker安装的.安装流程可参照 dockerfile 这里安装了两个tomcat,端口分别是42000和42001.第二个tomcat的首页随便加了些 ...
- Python程序里的注释和#号
Python程序里的注释是很重要的.它们可以用自然语言告诉你某段代码的功能是什么.在你想要临时移除一段代码时,你还可以用注解的方式将这段代码临时禁用.接下来的练习将让你学会注释 : # A comme ...
- [Swift]LeetCode99. 恢复二叉搜索树 | Recover Binary Search Tree
Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...
- [Swift]LeetCode863. 二叉树中所有距离为 K 的结点 | All Nodes Distance K in Binary Tree
We are given a binary tree (with root node root), a targetnode, and an integer value K. Return a lis ...
- 写给需要的Javaer-大数据学习路线篇
已经更新100+篇~ 关注公众号,BAT大神带你飞~ 听说你还在写Java,看Spring,看Dubbo,今天SpringCloud, 明天Dubbo3.X新版本... 10个开发9个半在写Java后 ...
- 在admui中怎样上传本地文件?
1.首先需要引入一些插件 css: <link rel="stylesheet" href="/vendor/blueimp-file-upload/jquery. ...
- python编程实战
1.计算对称平方数 题目描述 打印所有不超过n(n<256)的,其平方具有对称性质的数,如11*11=121. 输入描述 无 输出描述 每行一个数,表示对称平方数 def f(n): flag ...