如何在牛客网出Special Judge的编程题

普通编程题的录入可以直接hr.nowcoder.com后台网页上操作。
为了让编程题支持Special Judge(以下简称spj),我们需要加入一个spj的判断代码。

spj代码里有三个文件可以读取,分别是
"output":测试数据的out文件
"input":测试数据的in文件
"user_output": 执行用户代码的输出文件

OJ系统通过spj程序的返回值来判定用户代码的正确性,return 0代表程序正确,return 1代表程序错。

假设我们出了一个编程题如下:
给定一个正整数n,请打印输出任意一个小于n的奇数

很显然这个题目的答案不是唯一的,我们需要进行spj,这个题目的c++ spj如下

java spj如下
import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) throws IOException {

        Scanner input = new Scanner(new File("input"));
        Scanner userOutput = new Scanner(new File("user_output"));

        int n = input.nextInt();
        int ans = userOutput.nextInt();

        if(ans < n && ans % 2 == 1){
            System.exit(0);
        }
        System.exit(1);
    }
}
python spj如下
input = open('input')
n = int(input.readline().strip())
input.close()

user_output = open('user_output')
ans = int(user_output.readline().strip())
user_output.close()

if ans < n and ans % 2 == 1:
    exit(0)
exit(1)


写完spj代码以后命名为checker.cc ,文件名必须为checker,其他语言如python的spj文件命名为checker.py,python3的spj文件命名为checker.py3, java的为checker.java
然后和测试数据放在一个目录里压缩打包为zip
通过后台的批量上传传到出题系统,点击全部替换,上传刚刚的压缩包,解析成功后如下,再点击审核入库,进行验题

验题通过后保存就可以了,注意如果是spj的代码在验题页面的左上角是有spj标记的




牛客的spj也无缝支持CF的testlib.h

如果还有任何问题请联系 @小小 @王清楚




全部评论
给出的例子中 给定一个正整数n,请打印输出任意一个小于n的奇数 若 n = 6 那么用户输出了3 4(输出了2位)SPJ也会判断其正确
1 回复 分享
发布于 2021-01-19 20:48
请问 Rust 的编译指令是怎么样的呀,有没有开 -O 呢?
点赞 回复 分享
发布于 2021-02-01 18:38
问一下牛客的评测环境是 linux 环境吗?
点赞 回复 分享
发布于 2022-05-19 16:54

相关推荐

点赞 评论 收藏
分享
评论
点赞
2
分享
牛客网
牛客企业服务