对拍学习笔记

对拍

一,背景

在各种考试的赛场上,经常会有一些童鞋打了一个自己所认为的正解,但是他不知道这个做法是否正确,或者不能确定自己的代码是否正确了。经常会有一些童鞋,因为各种千奇百怪的错误,错失各种规模大小的分数,空余悲切。

非常显然的是,正解相较于暴力的优点,十有八九都是跑得快,但是他们的答案都是一样的,所以在检查正解的正确性的时候,我们可以直接忽略掉时间的因素,仅考虑结果是否正确。

这时候我们就需要对拍了。

以上都是废话,下面进入正题。

 

二,原理

对拍的原理其实非常简单:

1,  随机各种数据(只要符合输入格式即可)

2,  分别引用运行暴力和正解并记录两者结果

3,  最后比对一下两个结果是否一致

是不是很好理解?

那么要怎么代码实现呢?

Windows下:

 

 

Linux下:

 

 

 

做几个小解释

1,  system是引用运行的意思

2,  为了避免偶然性,对拍的数据肯定是要多一点的,所以要一直循环(随你多少次)

3,Windows下的system里的那一坨东西是该程序的地址,一般在文件夹里复制粘贴就可以了;Linux下的同理,前面三行的是编译的意思,循环里的是运行

4,  fc和diff是比较的意思,相同为0不同为1

5,  begin 和end 是用来记录正解代码运行时间的

6,  sleep的作用是停顿1s,目的是让srand(time(0))中的time(0)可以取到不同的随机种子,每隔1s换一次

 

谢谢阅读!!!

posted @ 2019-10-05 20:07  maskey  阅读(191)  评论(4)    收藏  举报