輸入輸出優化

寫在前面

在遇到很大的數據時,任何一點點的優化都能夠減少程式的運行時間,增加分數。

因此,我們應該重視輸入輸出優化。

順序排名

眾所周知,字元的讀入速度遠高於數字。

一般情況下,常用的輸入輸出可以按照速度進行順序(由慢到快):

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 和關閉同步流混用的結果,但以防萬一,不要嘗試。