介绍
金枪鱼是。 AtCoder 的启发式评级是浅蓝是。
本文适用于想要在 AHC 中尝试大量测试用例的人。
如果您没有时间,只需阅读“要尝试多少个测试用例”和“(假设)问答”。
为什么要尝试很多测试用例?
在 AHC(AtCoder Heuristic Contest,一种为难以找到最佳解决方案的问题创建最佳解决方案的竞赛)中,答案是在许多测试用例中判断的。现在,在 AHC 中,为什么我们(那些偏执的人)要尝试大量的测试用例?
现在,我想向您展示 AHC 的两件事情。
有一个
我说:“好吧!我感觉我手头已经试了10个案例,而且我的分数似乎在上升,所以我会提交它。”
~ 提交 WJ 26/50 ~
我说:“不,我赢了。我要去洗澡了。”
〜沐浴后〜
我说:“啊?我的分数要降了!!”
有 2
我说,‘不,这就是发生的事情。
~ 提交 WJ 10/50 ~
我说:“好吧,我要去洗澡了。”
〜沐浴后〜
重新“Boku”
是的,对于有很多测试用例的 AHC,通常很难通过检查前 5 个或 10 个用例来知道总分和有效答案是否总能得到。
此外,AHC 的提交时间限制在短期内为 5 分钟,在长期内为 30 分钟。
在提交长期竞赛并获得RE或WA之后,我每天都会发生三分钟后发现一个错误并痛苦地晕倒的情况。
对此,如果手头可以多试几个测试用例,会更容易看出因答案码的变化、有无RE和WA等因素导致的分数的涨跌。
要尝试多少个测试用例
所需的执行环境
- 锈(希望货能跑)
- 红宝石
- ShellScript
(已在 Ubuntu 22.04 上确认运行)
AHC 通常有一个用 Rust 编写的可视化器/输入生成器的本地版本可供下载。用这个。
下载本地版本的可视化工具/输入生成器并将其展开以创建一个名为tools 的目录,因此我们将在该目录中工作。
在tools 中创建您的答案代码。我主要使用 C++,所以我用名称 main.cpp 创建它。
tools/
├ in/
├ src/
├ target/
└ main.cpp
我想现在的目录结构大概是这样的(tools里面的文件我还没有写完。比如README_ja.md这样的文件可能有,但是我暂时没有,所以我跳过它)。
接下来,在tools中创建help.rb和run.sh,内容如下。
n = gets.split[-1].to_i
tmp = 0
File.open("res.txt", mode = "r+") do |f|
s = f.read
tmp += s.nil? ? 0 : s.to_i
tmp += n
end
File.delete("res.txt")
File.open("res.txt", mode = "w") do |f|
f.puts tmp
end
cp /dev/null ./res.txt
g++ main.cpp -o main
for file in $(ls -1 ./in/*.txt); do
./main < $file > out.txt
cargo run --release --bin vis $file ./out.txt > ./out2.txt
cat ./out2.txt | ruby help.rb
done
echo "Done! Score:"
cat res.txt
并在tools 内创建另一个文件res.txt。
我觉得如果现在这样就好了。
tools/
├ in/
├ src/
├ target/
├ help.rb
├ run.sh
└ main.cpp
在这种状态下,
$ cd ~/途中のディレクトリ/tools/
$ sh ./run.sh
然后测试用例执行将开始。
(假设)问答
我正在使用 Python,我该怎么办?
制作main.py 而不是main.cpp,run.sh的内容
cp /dev/null ./res.txt
for file in $(ls -1 ./in/*.txt); do
python3 ./main.py < $file > out.txt
cargo run --release --bin vis $file ./out.txt > ./out2.txt
cat ./out2.txt | ruby help.rb
done
echo "Done! Score:"
cat res.txt
请。
我没有动。
由于我是在 AHC013 期间写这篇文章,所以之后的 AHC 中本地版本可视化器和输入生成器的内容
可能不同。到时候请改写run.sh和help.rb好了。
它工作缓慢。
对不起…
它很慢,因为它同时使用了 ShellScript 和 Ruby。
如果你觉得“我可以写一个更快的执行脚本!”,请留言?
在最后
AHC 好玩~!
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308623152.html