1. 对拍
所以我到现在不会对拍
这就是生成随机数据->暴力&正解运行输出结果->比对两个答案是否正确
随机数据
比较low的就是rand()
Windows下rand()
的数据规模
Linux下rand()
的数据规模
先生成有逻辑的数据然后随机打乱
random_shuffle(n+x,n+y)
是C++11标准的随机打乱
首先选一个数组n,把下标
这样数据就有随机性了
整数序列
点击查看代码
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:
手动模拟就完事了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具