輸入輸出優化(黑科技)

2022-02-02 07:13:29 字數 1331 閱讀 4887

正常版,輸入輸出優化比較正常,無論是scanf/printf/cin/cout都可以混用

用法:int x=gi; pint(x); 類似這樣。

#define gc getchar()

intg_i()

#define gi g_i()

#define pob

#define pc(x) putchar(x)

namespace ib

inline

void pint(int

x)

if(x<0)

char *s=ib::b;

while(x) *(++s)=x%10, x/=10

;

while(s!=ib::b) pc((*(s--))+48

);}

喪病版,輸入優化採用fgets,不能與cin/scanf混用,如果需要讀入其他型別可能需要手寫。

輸出優化的行為有一些奇怪,它會把輸出快取到一定數量之後一起輸出,可以用pob把快取中的字元輸出,除錯時可能需要注意一下(比如多個詢問的題目答案可能會在最後一起輸出)

用法也是:int x=gi; pint(x); 如果需要把快取中的內容輸出清空就用pob;

輸入輸出快取大小可以用bufsize這個巨集來控制。

#define bufsize 300000

namespace fib ,*f=b;}

#define gc ((*fib::f)?(*(fib::f++)):(fgets(fib::b,sizeof(fib::b),stdin)?(fib::f=fib::b,*(fib::f++)):-1))

intg_i()

#define gi g_i()

namespace fob ,*f=b,*g=b+bufsize-2

;}#define pob (fwrite(fob::b,sizeof(char),fob::f-fob::b,stdout),fob::f=fob::b,0)

#define pc(x) (*(fob::f++)=(x),(fob::f==fob::g)?pob:0)

struct foce } _foce;

namespace ib

inline

void pint(int

x)

if(x<0)

char *s=ib::b;

while(x) *(++s)=x%10, x/=10

;

while(s!=ib::b) pc((*(s--))+48

);}

在許多oj上都交過,正確性應該沒什麼問題。

輸入輸出優化

最近遇到乙個題,照我的思路差100ms才能過,於是想盡一切辦法做微小優化試圖卡過去,最後雖然過去了,但要是會優化輸入就更好了,於是學習一下這個模板備用 以下模板,具體講解參考參考文章 include include void read int x 普通版 s getchar while s 0 s ...

輸入輸出優化

code1inline int read code2inline int read code1 include using namespace std void write int x if x 9 write x 10 putchar x 10 0 code2inline void write i...

常用技巧 輸入輸出優化 輸入輸出外掛程式

我們知道cin cout是比較慢的,不過它們可以加速。在 中加入這兩句即可 std ios sync with stdio false std cin.tie 0 加速過後cin的速度與scanf的速度近似 當然,加速過後就不要混用print和cout,scanf和cin了。因為不同步,後果會很嚴重...