首页 > 其他分享 >关于对拍

关于对拍

时间:2024-02-01 23:55:07浏览次数:17  
标签:test1 std test2 int 关于 include out

知周所众,对拍是一个在比赛中重要的技能之一。

所以,我自制了一个建议的对拍程序,简洁实用(Windows环境)。

原理

对拍原理大致如下:

数据生成器(generator)->程序1->输出1

数据生成器(generator)->程序2->输出2

输出1-对拍-输出2
$\ \ \ \ \ \ \ \ \ \ \ $ |WA
$\ \ \ \ \ \ \ \ \ \ \ $ v
$\ \ \ \ \ $ 保存数据

怎么样,我手敲的流程图好不好看?

代码实现

generator:(根据具体题目修改随机数范围和数量)

#include<iostream>
#include<cstdlib>
#include<ctime>

int main()
{
	std::srand(std::time(nullptr));
	
	int n=std::rand()%5000+1,m=std::rand()%5000+1;
	
	std::cout<<n<<" "<<m<<std::endl;
	return 0;
}

随机生成数据并输出。

test1:(记得修改后要编译)

#include<bits/stdc++.h>
using namespace std;
long long n,m;
int main()
{
	ios::sync_with_stdio(false);
	cin>>n>>m;
	cout<<n+m<<endl;
	return 0;
}

将你的代码放入这里,这个是瞎写的A+B Problem。

test2:(记得修改后要编译)

#include<bits/stdc++.h>
using namespace std;
long long n,m,a,b;
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        a+=1;
    for(int i=1;i<=m;i++)
        b+=1;
    cout<<a+b<<endl;
    return 0;
}

这是你写的暴力代码。

Pair:(不用修改)

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int cnt=0;
	
	cout<<"Pair begin."<<endl;
	
	while(cnt<=100)
	{
		system("generator.exe > gen.in");
		system("test1.exe < gen.in > test1.out");
		system("test2.exe < gen.in > test2.out");
		if(system("fc test1.out test2.out > data.log"))
		{
			cout<<"Wrong Answer,";
			cout<<"found at Pair "<<cnt<<endl;
			cout<<"Pair over."<<endl;
			
			system("generator.exe > data.out");
			system("test1.exe < gen.in >> data.out");
			system("test2.exe < gen.in >> data.out");
			system("start data.out");
			return 0;
		}
		cout<<"Pair times:"<<cnt<<endl;
		cnt++; 
	}
	cout<<"Pair over."<<endl;
	cout<<"No WA."<<endl;
	return 0;
}

在这个对拍核心程序中,调用了三个程序的exe文件,将输出放入out文件中,并对比。

我相对于基础对拍程序加入了WA样例的数据显示。将你test1程序WA掉的样例的输入和两个程序不同的输出放到一起,并在找到问题后立刻打开,方便调试。

最终展示

对拍程序(pair)运行时:

未发现错误:

稍微修改了test1,将n+m改为n-m后,运行效果:

可以看到,运行了之后发现错误,对拍终止,并显示WA数据的输入输出(第一行为输入,后两行分别为test1和test2的输出)

效果还算不错,这篇指导推荐人群:了解对拍原理但懒得写代码的人。

标签:test1,std,test2,int,关于,include,out
From: https://www.cnblogs.com/j1hx-oi/p/18002375

相关文章

  • 关于Qt MySQL有QMYSQL驱动,但是Driver not loaded问题。
    首先,说一下我当时的问题,控制台显示有QMYSQL驱动,但是就是检测不到报错没有驱动,数据库连接不成功。 一开始是一直在复制粘贴.dll和.lib,但是还是不行,一直试一直拖好久都没解决这个问题。因为我sqlite可以用,所以也不着急搞MySQL,但是每次一有时间,看到MySQL不能使就不舒服,就像再调......
  • 关于Spring5新增的Indexed注解
    前言如果我们应用中使用@ComponentScan注解扫描的package包含的类很多的时候,Spring解析耗时就会很多,相应的应用启动时间也就更长,Spring5.0引入了一个新的注解@Indexed,它可以为Spring的模式注解添加索引,以提升应用启动性能。使用<dependency><groupId>org.springframewor......
  • 关于多个程序同时调用一个库可能引发的问题
    无论是多少个进程或线程去调用同一个库时,代码段都是共享的数据段在进程之间相互独立,同一个进程中的线程共享该进程的数据段。......
  • 关于阻抗匹配的内容
    网上的截图:            ......
  • 关于pycharm报错:Original error was: DLL load failed while importing _multiarray_u
    前提:遇到该问题时,已重新卸载并安装numpy,但由于今日重新打开pycharm,运行相同的代码,又再次报错,故重新寻找了新的方式进行尝试。原文地址解决方法:Step1:点击run,找到EditConfigurationsStep2:在EnvironmentVariables后加入:Path=Anaconda根目录\Library\bin......
  • 关于FPS游戏开镜呼吸晃动的制作
    相信很多人都玩过FPS类型的游戏吧,比如CS,CF,绝地求生啊等等。FPS是一种非常经典的游戏类型。而且试问下有那个男生不喜欢开枪杀戮(仅只游戏内)的快感呢?哈哈。我也相信能做出一款FPS类型的游戏,是大部分喜欢玩FPS游戏的人的理想。现在有unity这个引擎,我们很方便的就能做出一些FPS游戏......
  • 关于卡特兰数
    不那么有意思的定义卡特兰数\(\big(Catalan\big)\)用\(H\)来表示,有形式如:\(H_n=\dfrac{\binom{2n}n}{n+1}(n\geq2)\)很好,你已经知道定义了。老师说:它是栈出栈入栈的\(方案数\)\(???\)放到一个递推式就有了:\(H_n=\begin{cases}H_{n-1}+H_{n-2}&\text{if}......
  • 关于Windows11的优化内容 - 进阶者系列 - 学习者系列文章
          这几天无事,想起上次刚重装的Windows11操作系统,对于系统优化的内容想记录一下,以前没写过相关的博文,这次就做个记录吧。对于Windows11,已经出来几年了,相关的设置啥的也有,就是优化方面的软件和设置也有相关的,这次就把笔者这边所有相关的优化工具软件和脚本啥的一并发布......
  • 关于 java如何集成chatgpt,如何开发接口,如何集成vue前端界面
    Java如何集成ChatGPT,如何开发接口,如何集成Vue前端界面随着人工智能技术的不断发展,聊天机器人已经成为了人们日常生活中不可或缺的一部分。ChatGPT是一种基于深度学习的聊天机器人技术,它可以通过学习大量的语料库来生成自然流畅的对话。本文将介绍如何使用Java语言集成ChatGPT,开......
  • Rust 关于 Cargo 和 Crates.io 的内容
    原文链接参考Rust关于Cargo和Crates.io的内容,注意Windows和Linux系统的文件路径差异。目录采用发布配置自定义构建将crate发布到Crates.io编写有用的文档注释常用(文档注释)部分文档注释作为测试注释包含项的结构使用pubuse导出合适的公有API创建Crates.io账号向新c......