Shared code for dsrw course
这是 task2 的对拍器,用于检验你的程序的正确性。它将重复随机生成测试数据,运行对照程序与待测程序,并对比二者的答案。
为了使用该对拍器,你需要:
- (可选) 打开
task2_chk/dmk.py
,修改生成的数据范围。 - 将可执行文件命名为
btree
,置于task2_chk
文件夹内。或者使用软链接,将可执行文件的链接置于此处。 - 进入
task2_chk
文件夹,运行main
。
助教上传的 data maker 较慢,请耐心等待。每 check 一组测例,对拍器将会输出一行 ok。若答案错误,则会报错停止,此时 task2_chk
目录下的 in
文件是让你出错的输入,out
是你的输出,ans
是对照程序的输出。
若遇到问题或不会使用,请联系本人。
如题,这是 task3 的形式化任务描述,若有问题请联系我。
这一部分包含 task3 的两个数据生成器,以及检验单组数据正确性的 checker。仅支持单个文件 data.in
读入,没有实现分配操作至多个文件的功能。
-
dmk.cpp
:生成随机数据。生成方式:先生成$10^7$ 组insert + query
,再生成$10^7$ 个query
。所有询问操作中答案是 0 和 1 的各占一半。此程序生成的数据可用于常规正确性检验和效率测试,结果仅供参考。 -
dmk_fpr.cpp
:生成极端数据:先进行$10^7$ 次insert
,再进行$2 \times 10^7$ 次query
,所有询问的答案都是 0。这组数据旨在尽可能多地暴露 False Positive 的问题,其 FPR 会比上面生成的正常数据要大一些。
上面两个 data maker 运行都十分缓慢,大约需要十分钟来生成一组数据,请耐心等待。数据和答案将被一起生成,数据存储在 data.in
中,答案存储在 result.ans
中。
chk.cpp
:检验你的输出。你需要先运行你的程序,生成result.out
。checker 会读取result.out
和result.ans
进行对比,并输出你的 FPR 和 FNR。