一、建议:
1、建议使用Google浏览器 Google Chrome,IE浏览器部分界面不太兼容。
2、一定要使用 C 或 C++ 标准函数,否则会出现编译错误。
3、long long 类型使用 %lld 。
4、定义:double s ,则输出用printf("%f",s) 而不能用 printf("%lf",s) 。但输入必须用scanf("%lf",&s)。
5、评测时行末空格和文末空行会过滤,但数据中间不能有多余空格,否则会出现“Presentation Error(格式错误)”。 一般约定同一行相邻数据之间隔一个空格。
二、难度系数(R 的难度最低)
难度值 | 难度级别 |
[0,1500) | R |
[1500,1700) | L3 |
[1700,2000) | L2 |
[2000,2400) | L1 |
[2400,...) | S |
三、SuperOJ-Special Judge的使用样例1(题目:P1695 重组病毒)
#include <cassert>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
using namespace std;
const int ACCEPT = 0;
const int WRONG_ANSWER = 2;
FILE *fstd,*fout,*fin; //fstd 标准输出 fout 选手输出 fin 标准输入
double sans,sout,del;
bool DoCompare() //执行比较操作。
{
int n,m;
fscanf(fin,"%d%d",&n,&m);
for(int j=1;j<=m;j++)
{
fscanf(fstd,"%lf",&sans); //读入标准答案
fscanf(fout,"%lf",&sout); //读入选手答案
if (fabs(sans-sout)<=1e-6||sans!=0 && fabs(sans-sout)/sans<=1e-6) //比较精度
return true;
else
return false;
}
}
int main(int argc, char* argv[])
{
if(argc!=4)
{
printf("参数不足 %d",argc);
return -1;
}
if(NULL==(fstd=fopen(argv[1],"r"))) //打开文件
return -1;
if(NULL==(fout=fopen(argv[2],"r")))
return -1;
if(NULL==(fin=fopen(argv[3],"r")))
return -1;
if(DoCompare())
return ACCEPT;
else
return WRONG_ANSWER;
}
四、SuperOJ-Special Judge的使用样例2(题目:P1233 All Random, All Mid)
#include
FILE *fstd,*fout,*fin; //fstd 标准输出 fout 选手输出 fin 标准输入
bool DoCompare() //执行比较操作。
{
double std_ans,out_ans;
static char std_ans_s[105],out_ans_s[105];
for(int Case=1;fscanf(fstd,"%s",std_ans_s)!=EOF;Case++)
{
if(fscanf(fout,"%s",out_ans_s)==EOF) return false;
sscanf(std_ans_s,"%lf",&std_ans);
sscanf(out_ans_s,"%lf",&out_ans);
if(!(fabs(std_ans-out_ans)<=1e-10 || std_ans!=0 && fabs((std_ans-out_ans)/std_ans)<=1e-10)) return false;
}
return true;
}
int main(int argc, char* argv[])
{
if(argc!=4)
{
printf("参数不足 %d",argc);
return -1;
}
if(NULL==(fstd=fopen(argv[1],"r"))) //打开文件
return -1;
if(NULL==(fout=fopen(argv[2],"r")))
return -1;
if(NULL==(fin=fopen(argv[3],"r")))
return -1;
if(DoCompare())
return ACCEPT;
else
return WRONG_ANSWER;
}
四、SuperOJ-Special Judge的使用样例3(P2077 在美妙的数学王国中畅游)
#include
const int ACCEPT = 0;
const int WRONG_ANSWER = 2; //0:Accepted; 1:Presentation Error;2:Wrong Answer
FILE *fstd,*fout,*fin; //fstd 标准输出 fout 选手输出 fin 标准输入
char s[55], t[55];
const double EPS = 1e-7;
double a, b;
inline bool cmp(const double std, const double user) {
if (std - user < EPS && std - user > -EPS)
return true;
if ((std - user) / std < EPS &&
(std - user) / std > -EPS)
return true;
return false;
}
inline int Judge() {
int id = 0;
while (fgets(s, 55, fstd) != NULL) {
id++;
if (fgets(t, 55, fout) == NULL) {
printf("%s\n", "too long");
return 0;
}
if (strlen(t) > 50) {
printf("%s\n", "too long");
return 0;
}
bool correct = 0;
if (s[0] == 'u') {
if (strcmp(s, t) == 0) correct = 1;
} else {
sscanf(s, "%lf", &a);
sscanf(t, "%lf", &b);
if (cmp(a, b)) correct = 1;
}
if (!correct) {
printf("WA on %d std %.9f your %.9f", id, a, b);
return 0;
}
}
return 1;
}
int main(int argc, char* argv[])
{
if(argc!=4)
{
printf("参数不足 %d",argc);
return -1;
}
if(NULL==(fstd=fopen(argv[1],"r"))) //打开文件
return -1;
if(NULL==(fout=fopen(argv[2],"r")))
return -1;
if(NULL==(fin=fopen(argv[3],"r")))
return -1;
if(Judge())
return ACCEPT;
else
return WRONG_ANSWER;
}
五、Lemon-Special Judge的使用样例(P2077 在美妙的数学王国中畅游)
#include
char s[55], t[55];
const double EPS = 1e-7;
double a, b;
inline bool cmp(const double std, const double user) {
if (std - user < EPS && std - user > -EPS)
return true;
if ((std - user) / std < EPS &&
(std - user) / std > -EPS)
return true;
return false;
}
inline int Judge() {
int id = 0;
while (fgets(s, 55, ans) != NULL) {
id++;
if (fgets(t, 55, out) == NULL) {
return 0;
}
if (strlen(t) > 50) {
return 0;
}
bool correct = 0;
if (s[0] == 'u') {
if (strcmp(s, t) == 0) correct = 1;
} else {
sscanf(s, "%lf", &a);
sscanf(t, "%lf", &b);
if (cmp(a, b)) correct = 1;
}
if (!correct) {
return 0;
}
}
return 1;
}
int main (int argc, char *argv[]) {
fin.open(argv[1]);
fscore.open(argv[5]);
freport.open(argv[6]);
out = fopen(argv[2], "r");
ans = fopen(argv[3], "r");
int score = atoi(argv[4]);
fscore << Judge() * score;
fin.close();
fscore.close();
freport.close();
return 0;
}