正常版,輸入輸出優化比較正常,無論是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 300000namespace 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了。因為不同步,後果會很嚴重...