如何在 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 国际」许可协议进行许可。

posted @   Aewrxuk  阅读(508)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示