通用出OI样例模板
2025-03-25 19:54:04
发布于:广东
前言
大家出题时是不是常常因为不知道怎么快速编写样例而烦恼呢?💢
本文将给出一种出样例的示例代码文件
该方法只需复制下方的代码并保存到"makedata.h"的文件中,即可快速制造测试点。
这是是蒟蒻第一次写技术类文章,如有差错,欢迎指出!❤
✔makedata.h
#include<bits/stdc++.h>
using namespace std;
ofstream infile, outfile;
int times = 10;
void file(int tp) {
char inname[10],outname[11];
infile.close();
outfile.close();
sprintf(inname, "data%02d.in", tp);
sprintf(outname, "data%02d.out", tp);
infile.open(inname);
outfile.open(outname);
}
#define num(a,b) ((rand()*RAND_MAX+rand())%(a-b+1)+a)
string str(int aa, int bb) {
int xz = aa;
string p;
for (int ij = 0; ij < xz; ij ++) {
char c = num(int('a'), int('z'));
p += c;
}
return p;
}
int make(int tp);
int main() {
srand(time(0));
for(int tp = 1;tp <= times; tp ++) {
file(tp);
make(tp);
}
return 0;
}
同时感谢大佬的支持,想了解的可以看这里。
请点击右键另存为,并刚改后缀名为.rar,即可看到源文件
注意:该文件需和.cpp文件放在同一个目录下
代码分析🎇
1. times 变量
int times = 10;
- 定义了 变量,并设置了初始值为10。
其含义为:将生成 组测试样例。
2. file 函数
void file(int tp)
- 控制文件的输入输出
先关闭上次打开的文件,然后根据tp
的值生成新的输入输出文件。
3. num 函数
#define num(a,b) ((rand()*RAND_MAX+rand())%(a-b+1)+a)
- 生成在 之间的随机数
注意:生成数的范围并不在 之间,有2的误差
操作方法✨
- times
times = ......;
- 设定测试样例的组数
- infile
infile << ......
- 将输入存入到文件名.in文件中
- outfile
outfile << ......
- 将输出存入到文件名.out文件中
示例🎨
以下是用 生成 A1.A+B problem 的测试样例的示例代码
#include "makedata.h"
int make(int tp) {
times = 50; // 测试点的数量
int a = num(1, 100000000), b = num(1, 100000000); // 定义变量
// num(c, d) 指生成一个在c和d之间的随机数
infile << a << " " << b; // 输入到.in文件
outfile << a + b; // 输出到.out文件
return 0;
}
生成文件后要将所有关于测试样例的文件压缩到 .zip 中
如果觉得蒟蒻写得还不错,就点个小赞吧😉
此贴原著:🐱🚀,ID:4348708
禁止抄袭本帖,违者必究✌
全部评论 21
你是蒟蒻,那我们是什么?????????
2025-02-09 来自 江苏
36
2025-02-09 来自 广东
0
一下也没看懂
2025-02-06 来自 广东
2666
2025-02-06 来自 广东
12025-02-06 来自 广东
1用“deepseek”
2025-02-06 来自 广东
1
2024-10-20 来自 四川
2大大,如果要输入一个数组的样例(写一个就换行)怎么改呀
2025-03-04 来自 江苏
1infile << endl;
输出也是一样的:outfile << endl;2025-03-04 来自 广东
12025-03-04 来自 广东
1thank you
2025-03-04 来自 江苏
0
没看懂,就不看了
2025-02-11 来自 北京
1666,只要套用就行了,看看,↓
生成 A1.A+B problem 的测试样例的示例代码#include "makedata.h" int make(int tp) { times = 50; int a = num(1, 100000000), b = num(1, 100000000); infile << a << " " << b; outfile << a + b; return 0; }
2025-02-11 来自 广东
0
num() 为什么要对 取模? 啊
2025-02-09 来自 广东
1没问题,可以求出随机数就行
2025-02-10 来自 广东
0¿
2025-02-10 来自 广东
0666¿
2025-02-10 来自 广东
0
srand(time(0));
生成随机数较小,random_device rand;
的随机数会大一点。不过后者在不同的IDE效果不同,有时候会是伪随机数,所以如果random_device rand;
可以(例如ACGO IDE),我肯定会用它,但如果它不行(dev c++ 5.11),我通常会这么生成大随机数srand(time(0)); long long base=rand()%2+8;base=pow(10,base); long long n=rand()*base+rand();
2025-02-07 来自 浙江
1不过乘上个RAND_MAX好像也够了,就是出些高精数据还是得靠base,目前我已知的好像没有支持高精的真随机数
2025-02-07 来自 浙江
1666
2025-02-07 来自 广东
1熵池用完就老实了
2025-02-09 来自 广东
0
厉害大大
2025-02-07 来自 江苏
1666
2025-02-07 来自 广东
1你看下Deepseek那篇的评论,有笑话
2025-02-07 来自 江苏
0旅行者空的
2025-02-07 来自 江苏
0
顶
2025-02-07 来自 广东
1“感谢话丝血大佬提供的文章:使用图片传输文件的教程(有图床教程)”
该链接已失效!
2025-02-06 来自 浙江
166666,帖子不见了,改了
2025-02-06 来自 广东
1点击图片也没有源码
2025-02-06 来自 浙江
1下载图片,改后缀为.rar
2025-02-06 来自 广东
1
我抄,牛逼
2025-02-05 来自 天津
1示例🎨中"makadata.h"是make!!!害我半天
2025-02-03 来自 福建
12024-10-19 来自 广东
12024-10-19 来自 广东
1?!
2024-10-19 来自 广东
1
帮顶
2024-10-19 来自 广东
1顶
2024-10-19 来自 广东
12024-10-19 来自 广东
1秒回?
2024-10-19 来自 广东
1正好刷到
2024-10-19 来自 广东
1666,我才刚发不久
2024-10-19 来自 广东
1
顶
2024-10-19 来自 广东
1我现在还不会上传文件
2025-04-02 来自 浙江
0啊?
2025-04-02 来自 广东
0真不会
2025-04-03 来自 浙江
0压缩成.zip,上传测试点就可以了啊
2025-04-03 来自 广东
0
顶
2025-02-18 来自 广东
0
有帮助,赞一个