简介

在OI中,对拍是不可缺少的一部分 没有对拍的比赛不是完整的比赛

由于不能保证自己写的一定是对的,所以需要对拍来检验正确性

具体做法就是将自己写的认为是正解的程序,和自己写的暴力程序,通过随机生成数据并判断输出来检验正确性

在noip系列比赛中需要使用windows环境,对应的是windows的对拍程序

在noi系列比赛中使用的是noi linux环境,对应的是linux/unix的对拍程序

windows

需要准备的文件

  1. std.exe 要对拍的程序
  2. force.exe 检验std.exe是否输出正确的结果
  3. maker.exe 生成数据
  4. check.bat 对拍脚本
1
2
3
4
5
6
7
8
9
@echo off
:loop
maker.exe > data.in
std.exe < data.in > std.out
force.exe < data.in > force.out
fc std.out force.out
if not errorlevel 1 goto loop
pause
goto loop

*nix

需要准备的文件

  1. std 要对拍的程序
  2. force 检验std.exe是否输出正确的结果
  3. maker 生成数据
  4. check.sh 对拍脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
while :
do
./maker > data.in
echo "force time:"
time ./force < data.in > force.out
echo "std time:"
time ./std < data.in > std.out
if [[ `diff force.out std.out` != "" ]];
then
echo "gg"
exit
fi
done