输入输出优化

142 篇文章 0 订阅
73 篇文章 0 订阅

输入输出优化在输入输出几十万,几百万的数据时会有几百ms的优势。
一般来说我们读入都用的scanf和cin,实在必要的时候可以用getchar读入优化。
然后众所周知,cin比scanf慢,getchar最快。
https://blog.csdn.net/liyizhixl/article/details/54412459

位运算加速:(re<<1)+(re<<3)==re*10;

输入优化:

char buffer[maxn],*S,*T; 
inline char Get_Char()  //字符型变量优化
{  
    if(S==T)  
    {  
        T=(S=buffer)+fread(buffer,1,maxn,stdin);
        if(S==T) return EOF;  
    }  
    return *S++;  
}

inline int Get_Int()//整形变量优化
{
    char c;  
    int re=0;  
    for(c=Get_Char();c<'0'||c>'9';c=Get_Char());  
    while(c>='0'&&c<='9')  
           re=(re<<1)+(re<<3)+(c-'0'),c=Get_Char();  
    return re;  
}
//(re<<1)+(re<<3)==re*10;
/*int read()//整形变量优化
 {
 	int ret=0,f=1;char ch=getchar();
 	while(ch<'0'||ch>'9'){if(ch=='-')f=-f;ch=getchar();}
 	while(ch>='0'&&ch<='9') ret=ret*10+ch-48,ch=getchar();
 	return ret*f;
 }*/
inline double dbread()//实数变量优化
{
    double X=0,Y=1.0; int w=0; char ch=0;
    while(!isdigit(ch)) {w|=ch=='-';ch=getchar();}
    while(isdigit(ch)) X=X*10+(ch^48),ch=getchar();
    ch=getchar();//读入小数点
    while(isdigit(ch)) X+=(Y/=10)*(ch^48),ch=getchar();
    return w?-X:X;
}

输出优化:

inline void write(int x)
{
     if(x<0) putchar('-'),x=-x;
     if(x>9) write(x/10);
     putchar(x%10+'0');
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值