输入输出优化


写在前面

在遇到很大的数据时,任何一点点的优化都能够减少程序的运行时间,增加分数。

因此,我们应该重视输入输出优化。

顺序排名

众所周知,字符的读入速度远高于数字。

一般情况下,常用的输入输出可以按照速度进行顺序(由慢到快):

cin,cout -> scanf,printf -> 关闭同步流的 cin,cout -> 快读(即读入字符的 getchar,putchar)

模板

快速读入

inline int read()// 数据类型可根据使用情况进行更改
{
    int x=0,f=1;char ch=getchar();
    while( ch < '0' || ch > '9' ) {if( ch == '-' ) f=-1;ch=getchar();}
    while( ch >= '0' && ch <= '9' ) {x=x*10+(ch-48);ch=getchar();}
    return x*f;
}

快速输出

inline void print(int x)// 数据类型可根据使用情况进行更改
{
    if( x < 0 ){putchar('-');x=-x;}
    if( x > 9 ) print(x/10);
    putchar(x%10+48);
}

写在最后

一般情况下,对 I/O 的优化不会对结果造成过大的影响,认真优化算法才是正道。

此外,cin,cout 关闭同步流不能在 csp 中使用。已经有人因此连续爆零两年了。

虽说也有人说是 fclose 和关闭同步流混用的结果,但以防万一,不要尝试。