1. 程式人生 > >讀入優化新姿勢——學習筆記

讀入優化新姿勢——學習筆記

震驚!99.9%的oier都不知道。用了此方法,暴力立馬變標算!

最近學習了一個新的函式fread,可以從檔案中整塊讀入資訊,速度很快。基於這個函式,我們可以寫一個新的getchar():

inline char gc(){
    static char buf[100000],*p1=buf,*p2=buf;
    return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}

fread的4個引數分別表示從哪裡開始存,一個量是幾字節(char就是1),想要讀入幾個,輸入檔案。執行完後會返回成功讀入了幾個。
buf陣列就是記一下讀入的資訊。p1p2分別指向當前buf中的頭和尾。如果p1==p2說明需要再fread一整塊。
用它來寫讀優效果很好,輸入流很大的時候比用getchar()讀優快大概2倍多。
那種標算複雜度比較緊的,寫個玄學暴力加讀優可能就AC了。


不過要千萬注意這個不能與scanf混用。第一次調gc()之前才能用scanf。