快读优化模板

因为流是一种有延时的处理办法,读入和待输出的数据会先被储存在内存里,这样会使得在大规模数据的题中这种输入输出方式有些费时间

读入优化如下:

int read() {
    int X=0,w=1;//w用来控制正负数
    char c=getchar();//这里先读一个字符
    while(c<'0'||c>'9'){//跳过所有不为数字的字符
        if (c=='-') w=-1;//如果读到负号,w改变
        c=getchar();
    }
    while(c>='0'&&c<='9')
        /*
        这里是x=x*10+c-'0'
        x*10=x*2+x*8,用位运算再次优化效率
        */
        X=(X<<3)+(X<<1)+c-'0',
        c=getchar();
    return X*w;
}

缩行:

int read(){
    int X=0,w=1;char c=getchar();
    while(c<'0'||c>'9')
        {if (c=='-') w=-1;c=getchar();}
    while(c>='0'&&c<='9')X=(X<<3)+(X<<1)+c-'0',c=getchar();
    return X*w;
}

最终版

int read(){
    int x=0,k=1;char ch=getchar();
    while(ch<'0' || ch>'9'){
        if(ch=='-')k=-1;
        ch=getchar();
    }
    while(ch>='0' && ch<='9'){
        x=(x<<3)+(x<<1)+(ch^'0');
        ch=getchar();
    }
    return x*k;
}

能用位运算就用位运算吧

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注