struct ios {
inline char gc(){
static const int IN_LEN=1<<18|1;
static char buf[IN_LEN],*s,*t;
return (s==t)&&(t=(s=buf)+fread(buf,1,IN_LEN,stdin)),s==t?-1:*s++;
}
template inline ios & operator >> (_Tp&x){
static char ch,sgn; ch = gc(), sgn = 0;
for(;!isdigit(ch);ch=gc()){if(ch==-1)return *this;sgn|=ch=='-';}
for(x=0;isdigit(ch);ch=gc())x=x*10+(ch^'0');
sgn&&(x=-x); return *this;
}
} io;
int main(){io>>a>>b;}
需要注意的是,一旦用了这个读入优化之后,scanf,getchar
什么的都不能用了!
注意:
memset(dis,0x7f,sizeof dis);
dis[0][0]=0x7f7f7f7f
但是dis必须是int型的
错排公式D(n) = (n-1) [D(n-2) + D(n-1)]
,特殊地,D(1) = 0, D(2) = 1.
圆周率=acos(-1.0)
5.自然对数自然对数=exp(1.0)
6.浮点数比较时最好控制精度#define eps 1e-6
fabs(a-b)<eps
7.判断是不是2的幂
x > 0 ? ( x & (x - 1)) == 0 : false
8.lowbit函数 :
return x & (-x)
9.Runtime Error
指你的程序发生了运行时错误。可能是由于内存访问违规(数组下标越界也包括运行时下标为负数的情况)、除0等运行时问题,不是超时!!
10.除vector和string以外的STL都不支持*(it+1)的访问形式 11.位运算的妙用a&1 ⟹⟹⟹相当于a%2==1(判断奇偶性);
a^b ⟹⟹⟹相当于a!=b(判断a,b是否相等)
1<<n ⟹⟹⟹ 2n
12.运用fill函数给任意容器赋任意值 (1)给二维数组赋值fill(f[0], f[0]+N*N, k);
其中k就是要填充的值。