创建属于自己的域
https://vijos.org/
填入对应信息即可。
创建题目
点击题库
往下拉,点击创建题目
进入题目之后,点击设置
接下来就是重点,配置数据点:(如果想直接用,后面有捷径。)
写一个正确答案的代码:
例如:
#include<iostream>using namespace std;int main() {int a, b;cin >> a >> b;cout << a + b << endl;return 0;}
生成他的exe,VS用户按照一下流程可以找到:
点击:Debug文件夹之后即可找到。
Devc用户exe文件在CPP文件旁边:
重命名为:std.便宜美国vpsexe(弄懂之后,命名随意,这里只是用作一个示范,下面就不说了,名字都可以进行修改。)
即可看到文件扩展名。
再创建一个生成数据的exe,命名为:gen.exe,示例代码:
#include<iostream>#include<ctime>using namespace std;double random(double a, double b)///随机数产生器,其范围为[a,b);{ return a + (b – a) * rand() / (RAND_MAX + 1.0);}int main() {srand((unsigned)time(NULL)); // 生成随机种子random(1, 100);int a = random(1, 800);int b = random(1, 800);cout << a << ” ” << b << endl;return 0;}
将std.exe和gen.exe复制到同一路径中,创建两个文件夹:
Input和Output。
创建文本文件,输入以下内容:
@echo offset t=50:loopgen.exe > Input\input%t%.txtstd.exe < Input\input%t%.txt > Output\output%t%.txtset /a t-=1if %t% neq 0 goto looppause
50为测试数据数量,就是将gen.exe生成的输入数据放入Input\input%t%.txt中,(%t%就和C语言的%d差不多,:loop就是开始循环,if %t% neq 0 goto loop就是结束条件,set /a t-=1,t随着循环次数的增加而减少。),Input\input%t%.txt的数据又会输入至std.exe中,最后生成输出数据放入Output\output%t%.txt中。
保存之后双击就会将数据生成在各自的文件夹中。
接下来创建配置文件:
#include<iostream>using namespace std;int main() {int TimeLimit, ProblemSum;cout << “请输入时限(单位为秒):”;cin >> TimeLimit; cout << endl;cout << “请输入题目数目(能够被100整除,否则最后成绩计算会出现错误,最大不能超过60):”;cin >> ProblemSum; cout << endl;cout << “已输入至Config.ini文件中。” << endl;freopen(“Config.ini”, “w”, stdout);cout << ProblemSum << endl;for (int i = 1; i <= ProblemSum; ++i){printf(“input%d.txt|output%d.txt|%d|%d|\n”, i, i, TimeLimit, 100 / ProblemSum);}}
生成exe文件之后重命名为:GenConfig.exe。
移动到与run.bat同一路径中,双击:
输入:
第二行的数字要和你生成的数据点数要相同。
压缩至data.zip中即可。
然后选择文件上传之后点击更新即可。
懒人造数据方法
其实只要按照这张图片操作就可以了
链接:https://pan.baidu.com/s/13hKM0MgK-Z82aXL8YPbHiQ
提取码:Tzq6
05748984