【教程】如何正確的寫一個Lemon/Cena的SPJ(special judge)
阿新 • • 發佈:2019-01-31
Special Judge:當正確的輸出結果不唯一的時候需要的自定義校驗器
首先有個框架
#include<fstream>
ifstream fin,fout,fstd
ofstream fscore,freport;
double Judge(){
}
int main(int argc,char *argv[]) {
//put something to fstreams...
//Judge&output report
//close files
return 0
}
然後fstream的介面對於lemon和cena不同
For Lemon:
所有的都從argv[]裡面讀入
argv[1]:輸入檔案
argv[2]:選手輸出檔案
argv[3]:標準輸出檔案
argv[4]:單個測試點分值
argv[5]:輸出最終得分的檔案
argv[6]:輸出錯誤報告的檔案
然後lemon的spj就大概這樣寫
int main(int argc,char *argv[]){
fin.open(argv[1]);
fout.open(argv[2]);
fstd.open(argv[3]);
fscore.open(argv[5]);
freport.open(argv[6]);
int score=atoi(argv[4]);
fscore<<score*Judge()<<endl;
fin.close();
fout.close();
fstd.close();
fscore.close();
freport.close();
return 0;
}
For Cena:
“score.log” 輸出最終得分
“report.log”輸出錯誤報告
#FILENAME”.in”輸入檔案
#FILENAME”.out”選手輸出檔案
argv[2]:標準輸出檔案
argv[1]:單測試點分值
int main(int argc,char *argv[]){
fscore.open("score.log");
freport.open("report.log");
fstd.open(argv[2]);
fin.open("set.in");
fout.open("set.out");
int score=atoi(argv[1]);
fscore<<score*Judge()<<endl;
fin.close();
fout.close();
fstd.close();
fscore.close();
freport.close();
return 0;
}
*若描述和程式碼有不同,以程式碼為主qwq
*我就會這兩個了