vijos在vijos的自己的域中创建题目
Posted TanZq_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vijos在vijos的自己的域中创建题目相关的知识,希望对你有一定的参考价值。
创建属于自己的域
填入对应信息即可。
创建题目
点击题库
往下拉,点击创建题目
进入题目之后,点击设置
接下来就是重点,配置数据点:(如果想直接用,后面有捷径。)
写一个正确答案的代码:
例如:
#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.exe
(弄懂之后,命名随意,这里只是用作一个示范,下面就不说了,名字都可以进行修改。)
即可看到文件扩展名。
再创建一个生成数据的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 off
set t=50
:loop
gen.exe > Input\\input%t%.txt
std.exe < Input\\input%t%.txt > Output\\output%t%.txt
set /a t-=1
if %t% neq 0 goto loop
pause
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中即可。
然后选择文件上传之后点击更新即可。
懒人造数据方法
其实只要按照这张图片操作就可以了
以上是关于vijos在vijos的自己的域中创建题目的主要内容,如果未能解决你的问题,请参考以下文章