和 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
可以退出对拍。
我将模板的链接放到这里,自己根据需要去使用即可。
标签:file,Linux,int,clos,如何,freopen,使用,cpp,define From: https://www.cnblogs.com/Aewrxuk/p/17646830.html