浅谈c++实现对拍

本文介绍了C++中如何进行对拍,主要用于验证程序的正确性,特别是算法优化后的复杂度验证。内容包括基本要求、随机数生成、样例制造及对拍程序的编写,并探讨了特殊实现和正难则反的策略,适合算法竞赛和优化场景。
摘要由CSDN通过智能技术生成

论如何对拍

1 用途(需求)

赛场或平时验证某一程序的正确性。

2 基本要求

  • 不需要写文操!!!
  • 必须能够确保能够写出一个输出正确答案的std.exe程序(不要求时间)。
  • 适用于算法优化暴力复杂度或验证dp正确性。
  • 不适用于模拟题。
  • 读入不宜过于复杂。
  • 本博客中所有程序要求处于同一文件夹。

3 基本实现

3.1 写出std.exe文件

这个我不会教,也教不了、、
注意事项

  • 确保正确性!!!
  • 不需考虑时间复杂度。
3.2 制造定数量级的随机数
3.2.1 手造随机数前置基础

首先须知rand()函数。
最重要的一点: r a n d ( ) ∈ [ 1 , 32767 ] rand()\in[1,32767] rand()[1,32767]
因此,当我们想要造 1 0 9 10^9 109甚至 1 0 18 10^{18} 1018级别的随机数时,需手写 r a n d ( ) rand() rand()函数。

3.2.2 学会手造 1 0 9 10^9 109数量级的随机数

随机数范围 [ a , b ] [a,b] [a,b]

#define int long long

int rand9(int a, int b) {
   
	int res = 0;
	int t = rand();//最大只能至32767
	for (int i = 1; i <= t; ++i) 
		res = (res + rand()) % (b - a + 1) + a;
	return res;
}

各位可以在本地跑一下。
(是不是发现它只输出一个定值)
但是如果在主函数加一个srand(time(0))呢?

#include <bits/stdc++.h>
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值