关于如何生成数据/对拍

很多人对数据的生成都有疑惑,到底是怎么样可以快速、简单的生成高质量数据呢?

1、准备题面与标程

这个就需要自己去准备了,如果连标程都写不来那也没必要出题或对拍。(如果是对拍的话暴力就可以了)

2、根据数据范围修改文件

代码

#include<bits/stdc++.h>
//#define random(a,b) rand()%(b-a+1)+a//这个没必要用,出的数据比较小 
#define randd() rand()*rand()//保证不超过rand范围且随机性高 
using namespace std;
const int Case = 10;//总共的数据数量 

void generateData(int t) {
	int n=randd()%10+50*(t-1)+1;//首先创造一个随机数,随后用MOD来限制数据的范围 
	int m=randd()%100+600*(t-1)+1;
	cout<<n<<" "<<m<<endl;
	int nn=n;
	while(nn--){
		int a,b,c;
		a=(rand()%10+1)*10;
		b=(rand()%10+1)*(t>5?10:100);
		c=rand()%10+1;
		cout<<a<<" "<<b<<" "<<c<<endl;
	} 
}
int main()
{
	srand(time(NULL));//这样随机数就会随机,反正必须加 
	char in[100];
	for(int t = 1; t <= Case; t++) {
		sprintf(in, "data_%d.in", t);//生成的数据格式 
		freopen(in, "w", stdout);
		generateData(t);  
	}	 
	return 0;
}

 效果图

3、生成答案

注:所有文件必须放在同一文件夹。

#include<bits/stdc++.h>
using namespace std;
const int Case = 10;
int main()
{
	char in[100];
	for(int t=1; t<=Case; t++)
	{
		
		sprintf(in, "data_%d.in", t);//刚才生成的文件 
		freopen(in, "r",stdin);		
		sprintf(in, "data_%d.out", t);
		freopen(in, "w",stdout);
		system("std.exe");//标程 
	}
	return 0;
}

其他

若有关于图、数等的数据生成点这里​​​​​​​

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值