輸入輸出優化
寫在前面
在遇到很大的數據時,任何一點點的優化都能夠減少程式的運行時間,增加分數。
因此,我們應該重視輸入輸出優化。
順序排名
眾所周知,字元的讀入速度遠高於數字。
一般情況下,常用的輸入輸出可以按照速度進行順序(由慢到快):
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 和關閉同步流混用的結果,但以防萬一,不要嘗試。