一些奇怪的小科技,不一定有什么大用场,就是收集一下~
1.随机生成L~R间的实数:
double The_Rand(double L,double R) {
return rand() / (RAND_MAX*1.0)*(R - L) + L;
}
其中,
rand() / (RAND_MAX*1.0)
就可以产生0~1的随机实数了= =
2.快速读入:
scanf读入还要判断格式字符,比较慢,cin更不必说= =
我们已知读入的一定是整数(或者特定的字符),我们就可以利用飞快的getchar(void)来达到快速输入的目的!
代码(早已烂熟,这样应该是跑的比较快的)(写的码风很奇特大家轻喷):
int getchar(){
int a=0;char c=getchar();bool f=0; //f用来判断负数
for(;(c<'0'||c>'9')&&c!='-';c=getchar());//isdigit速度不明
if(c=='-') f=1,c=getchar();
for(;c>='0'&&c<='9';c=getchar()) a=(a<<1)+(a<<3)+c-'0';
if(f) return -a; return a;
}//返回值就是读进来的整数..
3.经实验,最快的max是:
inline int max(const int &a,const int &b){
if(a>b) return a; return b;
}
而define党们为了避免不必要的冲突,可以看一下自带max的define方法(这里用VS2015的define)
(((a)>(b))?(a):(b))
4.对拍的写法
I 写一个随机的数据生成器,里面加上
freopen("data.in","w",stdout); //第一个文件名无所谓,开心就好
II 找两个拿来对拍的cpp,分别是正确的(暴力or标程)和不一定正确的(自己的代码)
里面分别加上
freopen("data.in","r",stdin); //两个文件都加
freopen("sb.out","w",stdout); //不一定正确的,文件名搞笑的
freopen("smart.out",