对拍
写在前面
很久没有写过Blog了
csdn都有了好大的变动啊
最近也没做什么大事 但是好颓废呀 最近
NOIp之前的复习提纲变成了考前总结又变成了游记又变成了现在这篇
算了,就从这里开始吧
怀念曾经那个顶着学业压力一个月还可以写31篇博客的我
我
终于
会写对拍了!
其实好久之前老师就讲过 但是我却不以为意
结果NOIp2018 先打了暴力 后来打了个优化但是没有和暴力对拍 结果优化打错了 暴力是对的(而且居然还能A)
然后后悔死了
滚回来在某谷上刷水的时候有个题始终不过 然后就试了一下对拍
虽然写了对拍之后我还是没有找出来这道题的错误 或许是太暴力了
对拍有个bat版本的但是我看不习惯
现就从c++开始吧
还要感谢dalao的帮助
https://blog.csdn.net/c20190102/article/details/60138907
概念
用一个数据生成器生成很多组数据,然后将这些数据分别输入两个程序:一个是效率低但一定正确的,另一个是赛场上要交的程序,比较他们的结果,进行验证。
元素
数据生成器
#include<cstdio>
#include<ctime>//
#include<cstdlib>//
int main()
{
srand(time(NULL));//
int n=rand()%10+1;
int r=rand()%10+1;
int q=rand()%10+1;
printf("%d %d %d\n",n,r,q);
for(int i=1;i<=2*n;i++)
printf("%d ",rand()%10);
puts("");
for(int i=1;i<=2*n;i++)
printf("%d ",rand()%10);
return 0;
}
模板部分加了// (就是照抄的部分)
rand()是随机数 %10保证其为10以内的数
注意printf的格式 空格、换行一定要有
【类比一下手动输入就可以理解了】
正确程序
这个不需要多解释吧
你要交的程序
这个也不需要多解释吧
对排程序
其实也就是模板
#include<iostream>
#include<windows.h>
using namespace std;
int main()
{
while(1)
{
system("data.exe > data.txt");
system("1.exe < data.txt > 1.txt");
system("2.exe < data.txt > 2.txt");
if(system("fc 2.txt 1.txt"))
break;
}
system("pause");
return 0;
}
这里的data 1 2都是程序名
data是数据生成器
1 2的顺序其实没有什么影响 只要你知道哪个是哪个就可以了
步骤
- 打好程序
- 将你打的所有的东西放在一个文件夹里面(主要是要让它们的exe在一起)
- 点击对拍程序的exe
- 暗中观察
如果你的程序是对的,就是这样:
如果不对,就是这样:
然后你可以打开它自动生成的txt文件来看数据
诶我要说什么好像忘记了修改你的程序
写在最后
其实还是很简单的对吧
但是要记住啊
话说csdn的代码块怎么变丑了
忆昔午桥桥上饮,坐中多是豪英。
长沟流月去无声。杏花疏影里,吹笛到天明。
二十余年如一梦,此身虽在堪惊。
闲登小阁看新晴。古今多少事,渔唱起三更。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现