如何在 Linux 上使用对拍
和 Windows 差不多,你需要以下几个文件:
我们依次来看里面都有什么:
bf.cpp:#
这个 cpp 是用来使用暴力得出正解的。
#include <bits/stdc++.h>
#define file(x) freopen(x,"r",stdin);
#define clos(x) freopen(x,"w",stdout);
using namespace std;
int main()
{
file("a.in");clos("a.out");
// 这是正确的暴力代码
return 0;
}
data.cpp:#
就是数据生成器,根据需求的格式生成数据即可。
#include <bits/stdc++.h>
#define file(x) freopen(x,"r",stdin);
#define clos(x) freopen(x,"w",stdout);
using namespace std;
const int seed=114514;
mt19937_64 mt((unsigned long long)&seed);
inline int rand(int l,int r)
{
return uniform_int_distribution<int>(l,r)(mt);//<>不填写默认为int类型
// uniform_int_distribution生成整数,<>不填写默认为int
//uniform_real_distribution生成实数 ,<>不填写默认为double
}
int main()
{
clos("a.in");
// 这是数据的格式 赋值直接a=rand(1,10000)即可
return 0;
}
dp.bash:#
主要是让终端去运行的对比操作,文件名具体看自己叫什么。
t=0
while true;do
let t++
echo "# "$t
./data
./bf
./text
if diff a.ans a.out -Z;then
printf "AC\n"
else
printf "WA\n"
break
fi
sleep 0.1
done
text.cpp:#
用来放自己的代码。
#include <bits/stdc++.h>
#define file(x) freopen(x,"r",stdin);
#define clos(x) freopen(x,"w",stdout);
using namespace std;
int main()
{
file("a.in");clos(a.out);
// 这是你要测试的代码
return 0;
}
然后打开终端,找到文件位置,先将每个文件编译一下,g++ text.cpp -o text
类似的格式即可,dp.bash
需要用 chmod +x dp.bash
去编译,可以通过输入 ll
来看是否全部编译过:
每一个要运行的文件名最后的 x 都在说明是编译好的,注意每次修改后记得及时在终端重新编译。
最后直接输入 ./dp.bash
就可以开始对拍了,ctrl+c
可以退出对拍。
我将模板的链接放到这里,自己根据需要去使用即可。
作者:Aewrxuk
出处:https://www.cnblogs.com/Aewrxuk/p/17646830.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)