當我們考試時遇到大量的讀入或者輸出時,這些代碼會耗費許多運行程序的時間,導致TL
本來 log2n 的算法因為讀入被卡成線性的就太不划算了,所以我們這里要采用讀入輸出優化
getchar 和 putchar 是最快的讀入輸出方式,變量名盡量用一些不是很常用的,以免沖突
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<cmath> 5 #include<iostream> 6 #include<algorithm> 7 using namespace std; 8 9 inline int read() 10 { 11 char ch=getchar(); 12 int re=0; 13 bool fl=1; 14 /* 15 if (ch=='-') 16 { 17 fl=0; 18 ch=getchar(); 19 } 20 */ 21 while (ch>='0'&&ch<='9') 22 { 23 re=re*10+ch-'0'; 24 ch=getchar(); 25 } 26 return fl?re:-re; 27 } 28 inline void write(int re) 29 { 30 /* 31 if (re<0) 32 { 33 putchar('-'); 34 re=-re; 35 } 36 */ 37 if (re>9) write(re/10); 38 putchar(re%10+'0'); 39 } 40 int main() 41 { 42 int n=read(),i,a; 43 for (i=1;i<=n;i++) 44 { 45 a=read(); 46 write(a); 47 putchar('\n'); 48 } 49 return 0; 50 }
這里注釋掉的是考慮負數的情況,許多情況用不上
還有許多題目的輸出僅為一行或者很少的數據,我們可以不寫輸出優化
還要注明一點,inline也是一個函數優化,它相當於整個函數define,可以看做直接將代碼粘貼到調用的地方,而不進行遞歸,對於小而調用頻繁的函數可以使用
讀入優化可以當一個模板背下來,其實自己寫快的話也不過20秒的事
版權所有,轉載請聯系作者,違者必究
QQ:740929894