教程如何正确的写一个Lemon/Cena的SPJ(special judge)

Posted MashiroSky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了教程如何正确的写一个Lemon/Cena的SPJ(special judge)相关的知识,希望对你有一定的参考价值。

转自:http://www.cnblogs.com/chouti/p/5752819.html

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

*我就会这两个了

以上是关于教程如何正确的写一个Lemon/Cena的SPJ(special judge)的主要内容,如果未能解决你的问题,请参考以下文章

数据库原理难题,设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式

APIO 2014

设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:

数据库例题(创建数据库SPJ包含SPJ和SPJ表)

浅谈online judge平台 spj [special judge] 使用 | 修改问题

lemon spj无效编译器解决方法