博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现简单的对拍
阅读量:4709 次
发布时间:2019-06-10

本文共 1800 字,大约阅读时间需要 6 分钟。

自带WA自动机属性的ACMer,经常会遇到无限提交然后就是wa的情况,但是就是不知道自己到底哪里出错了。除了cf之类的网站能得到部分数据以外,很难有网站会告诉你数据。所以可以暴力写一发或者找一个正确的cpp文件,产生几组随机数,简单跑几次,,如果出现两者不一样的情况,再做分析。对拍就完成了这么一个功能。

首先,对拍的前提是你的暴力代码是完全正确的,你的随机数产生的数据是完全符合题意的。

以a+b为例,来了解一下最简单的对拍小程序。

先写一个错误的cpp文件,命名为my_cpp。

#include
using namespace std;int main(){ int a,b,ans; scanf("%d%d",&a,&b); ans=a*b; printf("%d\n",ans); return 0;}

然后,运行此cpp,得到一个.exe文件。

然后写一个正确的cpp文件,命名为test。

#include
using namespace std;int main(){ int a,b; long long ans; scanf("%d%d",&a,&b); ans=a-b; printf("%lld\n",ans); return 0;}

运行此cpp,同样得到一个.exe文件。

然后写一个产生随机数的cpp,命名为data。

#include
using namespace std;int main(){ srand(time(0)); int a,b; a=rand()*100,b=rand(); printf("%d %d\n",a,b); return 0;}

得到三个exe文件,将这三个exe文件放在同一个文件夹内。

然后建立一个.txt文件,内容是:

:again  data > input.txt  my_cpp < input.txt > my_cpp_output.txt  test < input.txt > test_output.txt  fc biaoda_output.txt test_output.txt  if not errorlevel 1 goto again  pause
注意文件的名称一定要一致。

然后保存此txt,将后缀改为.bat。运行此bat文件。

就会得到这样的结果,错误数据会自动写入input文件中。

还有一种方法,将bat文件写成cpp文件,编译运行得到exe文件,运行exe文件会得到同样的结果。

代码:

#include
#include
using namespace std; int main() { int t=0; while(1) { system("data.exe > data.txt"); system("my_cpp.exe < data.txt > my_cpp.txt"); system("test.exe < data.txt > test.txt"); if(system("fc test.txt my_cpp.txt")) { t=1; break; } } if(t==0) cout<<"no error"<

linu下的代码:

#!/bin/bashwhile true; do    ./data > data.in    ./std 
std.out ./Todobe
Todobe.out if diff std.out Todobe.out; then printf "AC\n" else printf "Wa\n" exit 0 fidone

转载于:https://www.cnblogs.com/buzaijian/p/8849174.html

你可能感兴趣的文章
31、任务三十一——表单联动
查看>>
python之hasattr、getattr和setattr函数
查看>>
maven使用阿里镜像配置文件
查看>>
Copy code from eclipse to word, save syntax.
查看>>
arguments.callee的作用及替换方案
查看>>
Centos 6.5下的OPENJDK卸载和SUN的JDK安装、环境变量配置
查看>>
【.Net基础03】HttpWebRequest模拟浏览器登陆
查看>>
zTree async 动态参数处理
查看>>
Oracle学习之常见错误整理
查看>>
数据库插入数据乱码问题
查看>>
【转】IT名企面试:微软笔试题(1)
查看>>
IO流入门-第十章-DataInputStream_DataOutputStream
查看>>
DRF的分页
查看>>
Mysql 模糊匹配(字符串str中是否包含子字符串substr)
查看>>
python:open/文件操作
查看>>
流程控制 Day06
查看>>
Linux下安装Tomcat
查看>>
windows live writer 2012 0x80070643
查看>>
tomcat 和MySQL的安装
查看>>
git常用操作
查看>>