關於HUSTOJ的小白記錄一
阿新 • • 發佈:2021-01-16
關於測試資料的表達的一些問題作為一個記錄
前言
自己應為教學的關係搭建了HUSTOJ評測系統,目前也碰到很多的坑,包括伺服器的選購,系統的搭建,資料庫的控制,配置表的操作,以及xftp連線等。作為一個小白,遇到的問題常常因為沒有記錄,導致後面繼續重複出現問題不知道如何去解決,
多次翻閱記錄、重複搜尋答案,效率太過於低下,所以嘗試使用文章記錄的方式。
其中被網友讀到可能是錯誤的內容請見諒。
二、關於測試資料
目前發現的一些規則是:
-
測試資料如果是輸入的,如:使用cin 或者 scanf的,都是由testdata中的*.in檔案中獲取。
#include <bits/stdc++.h> using namespace std; // N 為資料個數,MIN為資料下限,MAX為資料上限。 const int N = 1000, MIN = 1, MAX = 214740; int main() { srand(time(0)); //設定 cout printf 這些輸出流都輸出到 test0.in裡面去 freopen("test1.in","w",stdout); int a =0,b = 0; //隨機生成 N個數 for(int i = 0; i < N; i++) { //資料範圍在[MIN,MAX]之間 //printf("%d\n",rand()%(MAX-MIN + 1) + MIN); a = rand()%(MAX-MIN+1)+MIN; b = rand()%(MAX-MIN+1)+MIN; cout << a <<' '<< b <<endl; } //關閉輸出流 fclose(stdout); return 0; }
-
通過輸入後獲取資料並且對資料進行操作後輸出的,由testdata中的*.out檔案裡的對於行資料進行正確性驗證。依舊使用程式碼批量生成。
#include <bits/stdc++.h> using namespace std; int main() { freopen("test1.in","r",stdin);//設定 cin scanf 這些輸入流都從 test0.in中讀取 freopen("test1.out","w",stdout);//設定 cout printf 這些輸出流都輸出到 test0.out裡面去 //寫待測程式,即標程 int a,b,c,max,min; while(cin>>a>>b) { cout << a+b << endl; } //關閉重定向輸入 fclose(stdin); //關閉重定向輸出 fclose(stdout); return 0; }
-
部分不需要進行輸入的答案,也儘量匯入*.in檔案,檔案內使用幾個空格輸入,據說沒有輸入空格無法上傳,這個我沒有測試過。
-
答案唯一的測試用例,嘗試了在*.out中輸入多個答案想用來做非嚴格判題,出錯了。所以目前我只能對單答案的上傳只包含一個答案的用例。這點請明白的給予指點,感謝。
ps:今天修改HOSTOJ系統的時候,不知道發生了什麼,導致我使用的阿里雲伺服器出現500錯誤,最後只能通過之前的映象還原,還有由做映象的習慣,不然要哭死。多備份是一個好習慣。