考場技巧

CJZJC發表於2024-10-23

對拍

對拍的原理是:透過暴力程式和自己的程式輸出對比來檢查自己程式的錯誤。

好打的模板:

#include <cstdio>
#include <cstdlib>
int main() {
  int T=100;
  while (T--) {
    system("data.exe");  // 資料生成器將生成資料寫入輸入檔案
    system("std.exe");  // 獲取程式1輸出
    system("baoli.exe");  // 獲取程式2輸出
    if (system("fc std.out std.ans")) {
      // 該行語句比對輸入輸出
      // fc返回0時表示輸出一致,否則表示有不同處
      system("pause");  // 方便檢視不同處
      return 0;
      // 該輸入資料已經存放在test.in檔案中,可以直接利用進行除錯
    }
  }
}

簡易 checker

這個簡易 checker 是用來查出自己程式輸出和樣例答案不同的地方,考場上,靠裸眼不一定能發現自己程式輸出和樣例答案不同的地方,這時候就可以寫一個簡易 checker

好打的模板:

//適用於多行輸出,且每行輸出只有一個數字。
#include<bits/stdc++.h>
using namespace std;
#define int long long //看資料範圍
int n/*輸出行數*/,a[100010]/*每行輸出的數*/;
signed main(){
  freopen("std.out","r",stdin); //此時需要把輸出檔案和答案檔案整理道同一個檔案中,第一行寫輸出檔案的行數,然後寫輸出檔案和答案檔案。
  freopen("result.txt","w",stdout);
  cin>>n;
  for(int i=1;i<=n;i++){
    cin>>a[i];
  }
  for(int i=1;i<=n;i++){
    int x;
    cin>>x;
    if(x!=a[i]){
      cout<<"WA";
      return 0;
    }
  }
  cout<<"AC";
  return 0;
}

相關文章