[转]Special Judge在HUSTOJ中的使用
来源:互联网 发布:金管家进销存软件 编辑:程序博客网 时间:2024/05/16 08:11
主要步骤有:
1、在题目后台编辑页面启用该选项,如图1所示。
2、编制data.in、data.out、spj.cc(或spj.c)。
3、编译出spj,设执行权限,连同2中的三个文件一起上传至服务器。
例一
下面以UPCOJ中的一道题目为例说明SPJ在HUSTOJ中的使用。
(题目版权归原平台、作者所有,本文给出示例并不代表原题目使用同样方法进行评测。)
给出一个不小于12的正整数n,请你输出两个合数,使他们的和等于n。
分析题意,可以得出系统判断用户输出是否正确的两个条件是:
输出的两个数是否均为合数;
输出的两个数之和是否为n。
首先分别制定data.in(测试输入)、data.out(测试输出)如下:
filename: data.in
3
12
15
1000
filename: data.out
8 4
9 6
500 500
然后编写spj.cc(特判程序)。HUSTOJ中的spj.cc需要有3个文件名参数传入:测试输入、测试输出、用户输出。
spj的返回值决定着判断结果,成功返回(0)表示AC,其他非零值表示WA。
下面给出一个本题spj.cc的示例代码。
filename: spj.cc
#include <stdio.h>bool is_prime(int x)//判断素数,伪代码{if(x是素数)return true;elsereturn false;}int main(int argc,char *args[])//主函数{FILE * f_in=fopen(args[1],“r”);//测试输入FILE * f_out=fopen(args[2],“r”);//测试输出FILE * f_user=fopen(args[3],“r”);//用户输出int ret=0;//返回值int T,n,a,b;fscanf(f_in,“%d”,&T);//从输入中读取数据组数Twhile(T–){fscanf(f_in,“%d”,&n);fscanf(f_user,“%d%d”,&a,&b);if(a+b!=n || is_prime(a) || is_prime(b))ret = 1;//Wrong Answer}fclose(f_in);fclose(f_out);fclose(f_user);return ret;}
编制完spj.cc后,将这些文件上传至服务器。
登录服务器以后进入/home/judge/data/[题号]文件夹,执行以下操作:
/home/judge/data/1000
acm@acm:/home/judge/data/1000$ sudo vim spj.cc #Edit the file spj.ccacm@acm:/home/judge/data/1000$ sudo g++ -o spj spj.cc # gcc -o spj spj.cacm@acm:/home/judge/data/1000$ sudo chmod +x spj
测试:
/home/judge/data/1000
acm@acm:/home/judge/data/1000$ ./spj data.in data.out data.outacm@acm:/home/judge/data/1000$ echo $?0 #Acceptedacm@acm:/home/judge/data/1000$ ./spj data.in data.out data.inacm@acm:/home/judge/data/1000$ echo $?1 #Wrong Answer
在本地HUSTOJ测试,通过网页提交,通过。
例二
某题目要求经过一定复杂计算后输出一个实数结果,精度要求控制在10−4内。
分析题意,可知spj需要判断测试输出a与用户输出x之差是否在eps之内。
spj.cc 如下:
filename: spj.cc
#include <stdio.h>const double eps = 1e-4;int main(int argc,char *args[])//主函数{FILE * f_in=fopen(args[1],“r”);//测试输入FILE * f_out=fopen(args[2],“r”);//测试输出FILE * f_user=fopen(args[3],“r”);//用户输出int ret=0;//返回值int T;double a,x;fscanf(f_in,“%d”,&T);//从输入中读取数据组数Twhile(T–){fscanf(f_out,“%lf”,&a);fscanf(f_user,“%lf”,&x);if(fabs(a-x)>eps)ret = 1;//Wrong Answer}fclose(f_in);fclose(f_out);fclose(f_user);return ret;}
- [转]Special Judge在HUSTOJ中的使用
- Special Judge类型题目的加题步骤(往hustoj里加题)
- Special Special Judge III ZOJ
- coj 1344: Special Judge
- Special Judge Ⅰ
- Special Judge Ⅱ
- zoj3411-Special Special Judge-高精度dp
- 1721. Gray code[Special judge]
- 1721. Gray code[Special judge]
- [sicily]1151. 魔板[Special judge]
- [sicily]1151. 魔板[Special judge]
- 简单魔板[Special judge]
- 【POI2001】和平委员会(Special Judge)
- SDUT 3919 Special Judge Ⅰ
- SDUT 3920 Special Judge Ⅱ
- SDUT 3921 Special Judge Ⅲ
- 从零开始写OJ---Special Judge
- poj1015 背包/动态规划(Special Judge,Special Love)
- Win10下eclipse与tomcat和Maven的集成与配置
- 小星星
- 实战 MLP CNN 实践mnist
- 开发者的macji qi磁盘空间清理方法
- Javascript学习笔记(DOM 模型概述)
- [转]Special Judge在HUSTOJ中的使用
- 673. Number of Longest Increasing Subsequence
- 一张图看透目前人工智能知识体系
- project euler 12 Highly divisible triangular number
- config system丢失
- 19. const
- 乘积最大【SSL JudgeOnline 1007】
- 利用 DATEPART 取得星期几
- 越王勾践剑“千年不腐”传奇