今天来总结一波卡常小技巧
- 快读
- 快输
- cin、cout 优化
快读
在各类比赛中,因为读入TLE 的不少,于是在被cin暴虐0x3f3f3f3f次后,getchar()的速度比cin快得多,便写出了快读程序:
int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9') f=ch=='-'?-1:1,ch=getchar();
while(ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
return x*f;
}
快输
有了快读,快输也少不了,putchar()闪亮登场:
void print(int x)
{
char P[105];int w=0;
if(x<0) putchar('-'),x=-x;
while(x) P[++w]=x%10+'0',x/=10;
for(int i=w; i>=1; i--) putchar(P[i]);
}
输入输出流优化
蒟蒻们看不懂也不会打快读快输,于是它们找到了优化cin、cout的方法,只需解除输入输出流的绑定,优化后跟scanf、printf 的效率差不多高
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);