对拍技巧详解

前置知识

随机数

引入

假设你现在正站在某大型比赛的赛场上,面对着屏幕前的世纪难题大汗淋漓,对正解毫无思路,这时你应该怎么办呢?

在这样的情况下,你应该写出一个暴力代码,尝试骗得一部分分数。

然而,不甘于平凡的你怎能只获得可怜的 20 p t s 20pts 20pts呢?你要拿 100 p t s 100pts 100pts

你绞尽脑汁,想到了一个“疑似正解”,这时你要怎么确定它是否是正解呢?

为了你的宏图伟业,你就要学习这样一种东西:对拍

对拍

对拍是干什么用的呢?

你写了一个暴力和一个“疑似正解”,你确定你的暴力是正确的,这时你要确定你的“疑似正解”是否正正确,这时你需要将暴力和“疑似正解”都输入相同的数据,看它们的输出是否相同。如果对于很多组数据都有相同的输出,我们就可以认为这个“疑似正解”应该就是正确的。

对拍由四部分组成:

  1. 一个随机数据生成器
  2. 你的暴力
  3. 你的“疑似正解”
  4. 对拍程序

我们以世纪难题为例,来尝试实现对拍。

首先,我们需要一个数据,注意,这个数据的范围不与题目的数据范围相同,而是要根据你的暴力,你的暴力要很快的将这个数据运行完毕,这样才能保证对拍的效率。

为了保证每次生成的数据都不同,我们要进行随机取值。具体参见随机数

我们将产生数据的代码命名为shujv.cpp,那么它编译出的EXE文件为shujv.exe,我们还要将产生的数据输出到一个TXT文件里,命名为shujv.txt

shujv.cpp内容如下:

#include<iostream>
#include<cstdio
  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值