0.说明
本博客 3、4步适用于 Luogu
1. 准备
在生成数据之前,您需要准备标程(提交答案题除外)。
2. 生成
您可以用古老的方法生成测试数据。
也可以使用下面的生成器:
#include<bits/stdc++.h>
#define RAND aabs(1LL*rand()*rand()*rand()*rand()*rand()*rand()*rand())
//rand范围过小,自己可以弄一个(
#define LL long long
using namespace std;
LL aabs(LL x){
if(x<0) return -x;
return x;
}
char INN[11]="001.in";
char OUTN[12]="001.out";
void data_in(int cc){//cc 代表数据编号
freopen(INN,"w",stdout);
//数据生成器
}
void data_out(){
freopen(INN,"r",stdin);
freopen(OUTN,"w",stdout);
//标程(记得初始化)
}
int Number_Of_The_Test_Case=20;//可以自定义,范围:1~999
int main(){
srand(time(0)+2147+4836*47);//可以自定义
clock_t t0=clock();
data_in(1);
clock_t t1=clock();fprintf(stderr,"第 1 组输入数据生成完成, 耗时 %lf s.\n",(t1-t0)/1000.0);
data_out();
clock_t t2=clock();fprintf(stderr,"第 1 组输出数据生成完成, 耗时 %lf s.\n",(t2-t1)/1000.0);
for(int i=2;i<=Number_Of_The_Test_Case;i++){
fprintf(stderr, "---- 开始生成第 %d 组数据 ----\n", i);
INN[0]=(i/100)+'0';
OUTN[0]=(i/100)+'0';
INN[1]=(i/10%10)+'0';
OUTN[1]=(i/10%10)+'0';
INN[2]=(i%10)+'0';
OUTN[2]=(i%10)+'0';
clock_t t0=clock();
data_in(i);
clock_t t1=clock();fprintf(stderr,"第 %d 组输入数据生成完成, 耗时 %lf s.\n",i,(t1-t0)/1000.0);
data_out();
clock_t t2=clock();fprintf(stderr,"第 %d 组输出数据生成完成, 耗时 %lf s.\n",i,(t2-t1)/1000.0);
}
fprintf(stderr,"完成!\n");
return 0;
}
3. 上传
将这些东西 全选,压缩为.zip格式的压缩包 (压缩包内只包含有.in .out的文件,不包含任何文件夹)
到要上传数据的题里,点击“编辑题目”
进入后点击“数据点配置”这一类别,之后寻找“上传数据”并点击,选择本地文件并输入验证码
4. 扩展
子任务
可以在测试数据页面更改数字,如上图。
SPJ
当一个题目可以接受多种正确答案,即有多组解的时候,题目就必须被 Special Judge。 Special Judge 程序使用输入数据和一些其他信息来判答你程序的输出,并将判答结果返回。
自定义计分脚本
有的时候出了一道题想要自定义比较复杂的计分策略,但是单靠 Subtask 的组合无法满足,这时候可以使用计分脚本。
详见:自定义计分脚本
交互题功能说明
交互题既用户提交的程序,通过出题人提供的交互库,与判题程序(SPJ)进行交互并获得输入、解答问题。
详见:交互题功能说明
标签:rand,自定义,计分,上传,测试数据,五分钟,交互 From: https://www.cnblogs.com/lzx19/p/test-data-maker.html