[关闭]
@exut 2024-10-23T18:41:21.000000Z 字数 637 阅读 99

关于对拍

赛场技巧


这个众所周知国内的比赛都是OI赛制,非常惨没有评测机

那怎么办,我总得知道我对不对吧

我可以手玩!

wok你能手玩多大,

于是有了一个选手必备的小技巧,对拍

我们首先需要准备三个程序,待检验代码,暴力代码(正确性保证的),数据生成器

然后我们来写一个checker

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int t;
  4. int main(){
  5. while(1){
  6. cout<<"#test"<<" "<<(++t)<<":";
  7. system("./data > data.in");
  8. system("./std < data.in > std.out");
  9. system("./BF < data.in > BF.out");
  10. if(system("diff std.out BF.out > error.log")){
  11. cout<<"AC\n";
  12. }
  13. else{cout<<"WA\n";break;}
  14. }
  15. }

其中这三个文件都不需要开文件读入输出,各自编译好之后直接运行checker就可以了

其中 "</>" 的用处就是重定向,让你的代码从指定位置输入输出

对拍无误就会一直运行,Ctrl+Z可以强制从终端退出

当发生错误时,会输出 WA,并把这一组数据保留并在error.log里面输出各自的输出

然后需要注意的是开了重定向就不必须开freopen 了,重定向就有freopen的作用会让你的输出到文件里去

另外,如果只是需要跟大样例比较,也可以直接freopen+diff命令,更方便其实

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注