1. 对拍

所以我到现在不会对拍
这就是生成随机数据->暴力&正解运行输出结果->比对两个答案是否正确

随机数据

比较low的就是rand()
Windows下rand()的数据规模[0,2151]
Linux下rand() 的数据规模[0,2311]
先生成有逻辑的数据然后随机打乱
random_shuffle(n+x,n+y)C++11标准的随机打乱
首先选一个数组n,把下标[x,y1]范围内随机打乱
这样数据就有随机性了

整数序列

点击查看代码
const int o=2222222;
int a[o];
void work(int n){
	srand(time(0));
	for(int i=1;i<=n;i++){
		printf("%d ",rand());
	}
}

区间

点击查看代码
void work(int n){
	srand(time(0));
	for(int i=1,l,r;i<=n;i++){
		l=rand()%n+1,r=rand()%n+1;
		if(l>r)swap(l,r);
		printf("%d %d\n",l,r);
	}
}

树&图

点击查看代码
const int o=2222222;
pair<int,int>e[o];
map<pair<int,int>,bool>;
void work(int n,int m){
	srand(time(0));
	for(int i=1,l,r;i<n;i++){
		l=rand()%i+1,r=i;
		e[i]=make_pair(l,r+1);
		h[e[i]]=h[make_pair(r+1,l)]=1;
	}
	for(int i=n;i<=m;i++){
		int x,y;
		do{
			x=rand()%n+1,y=rand()%n+1;
		}while(x==y||h[make_pair(x,y)]);
		e[i]=make_pair(x,y);
		h[e[i]]=h[make_pair(y,x)]=1;
	}
	random_shuffle(e+1,e+m+1);
	for(int i=1;i<=m;i++){
		printf("%d %d\n",e[i].first,e[i].second);
	}
}

暴力

这个没啥好讲究的,就整个算法对就行,就算是指数暴力也可以
然后拿来写部分分的也可以,但是必须对于全体数据来说是对的

正解

这个是要交的程序,文件啥的最好和要求的保持一致

检验器

传统评测下:
运行数据生成器
运行暴力程序和正解,得到正确输出和待检验输出
比对文件,输出正确/错误
如果错误停止程序

点击查看代码
void check(){
	system("maker.exe");
	system("bf.exe");
	system("ans.exe");
	if(system("fc: a.ans a.out"){
		puts("Wrong Answer");
		exit(0);
	}
	puts("Accepted");
}

SPJ:
手动模拟就完事了

posted @   2K22  阅读(16)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示