論那些在vjduge等oj平台踩過的坑

2021-09-11 17:50:04 字數 1677 閱讀 4221

(1)題目對時間和空間的要求:開陣列時要考慮記憶體,同時兼顧時間複雜度,對於要求相對較低的題目,可以直接暴力解決。

(2)出現presentation error,輸出格式不正確。例如:如下的空行問題

(3)注意要輸入多少次資料!!!謹記,第二次踩坑了,下不為例!!!自己出資料測試一點沒錯,找半天bug 找不到。

例如一定要仔細閱讀輸入輸出,不要範這種低階的錯誤。而且,在oj平台,這種迴圈輸入應該是非常常見的。

(4)注意,迴圈之後,有一些全域性定義的陣列可能會被修改過了,那麼迴圈結束一遍之後,要對它進行初始化,更改稱為初始值,否則可能出現疊加情況,導致wrong answer!當然,解決方法可以是在函式體中(或者每次的while迴圈中)定義新變數,每次重新定義。

(5)雖然看起來cin比較簡潔,但是事實上,使用cin可能出現一次資料讀入問題,比如說,在我的博文ants(poj no.1852)中,如果用cin讀入的話,會超時,當然,可以通過新增 ios::sync_with_stdio(false) 語句來解決。不過,事實證明,當需要讀入的資料量比較大時,用scanf更划算,同時scanf可以讀入一些具有特殊格式的字串,比如說:3:2可以通過語句

scanf("%d:%d", &a, &b);
來完成,而使用cin的話,至今本人沒想起來比這種更方便的讀入方式。

(6)初始化!!!!一定要初始化啊!!!

(7)每完成乙個案例之後資料要清零。

(8)如果通過了案例卻一直wa,那就按照自己思路從新過一遍。不能依賴debug!!!

(9)輸出乙個空格之後在換行!=直接換行

(10)float 對應 f%  double  對應lf%   要保留幾位小數就直接%.n就ok

(11)未知資料項數目時,判斷讀取是否已經到了結尾,可以使用~scanf,(貌似和!=eof等價)當然是用cin>>好像也是可行的

(12)讀取字串,可以使用scanf(「%s」,str),表示讀取整個字串,同時,不需要加取位址符,而scanf(「%c」,&ch),需要加取位址符號,表示讀取乙個字元,注意在讀取char型字串後,最後乙個為'\0',最後乙個應該為減一strlen(ch)-1

(13)注意就算是你宣告double型別變數,你double temp=1/3;結果仍然是0;所以要在前面加(double)!!!

(14)進製轉換,十六進製制數,十進位制輸出,使用c中的語法顯得更加有效。

#include #include using namespace std;

int main()

14.單引號表示和雙引號表示,並不相同,雙引號是字串,而單引號是字元,例如:「abcde」是正確的,但是,『abc』就是錯誤的。

15.printf 的妙用。

%-m.ns,輸出佔m列,n個字元輸出在m列範圍的左側,右補空格。如果n>m,則m自動取n值,保證n個字元正常輸出。

個人感覺,學習資料結構的目的就在於為了讓你更好地理解stl庫中的函式,一定要學會充分利用stl,可以大大提高你解決問題的能力,而不是自己一步步地手寫各種函式。同時,也可以讓**更加簡潔明瞭,當然,在比賽中可以節約時間。

例如常用函式sort的各種用法:

轉至博主t.x

重要的話說三遍。

stl!!!

stl!!!

stl!!!

那些在我周遭的人,對不起

今天天氣不好,陰沉沉的,就像是我的心情,比較陰鬱。坐在操場邊的觀眾席上,看著天空,很模糊,很灰色,很高,很遠。跑道上人來人往,足球場上人聲嘈雜,我就坐在這裡,不理不睬,獨自的思考。曾幾何時,我發現自己的周圍的朋友很少,已經是少的可憐了。那些我認識的,我了解了的人,都被我無情的貼上了無知無能世俗的標籤...

美劇在中國那些事

1.起源 1979年,美國 尼克森首次訪華之後,中美兩國簽署了一批文化交流專案。第二年,一部由 電視台譯制部引進的美國科幻連續劇 大西洋底來的人 突然出現在每週四晚8時的電視螢幕上。男主角麥克 哈里斯,是乙個手腳長蹼,能在水裡自由呼吸和游動的 蛙人 他和海洋學女博士伊莉莎白兩人,共同經歷了一系列發掘...

在論你應該看什麼書

沒辦法,今天又有人問這個問題,索性系統的作個答覆。我想這個問題,真的不好回答,因為我這個人就是看報紙入門,而不是看書入門的。而且最近也很少看書,特別是技術書籍。雖然有些書籍我覺得很好,但是想想又未必那麼合適,至少還有改進的必要。所以我覺得就不回答這個問題了。那我篡改一下問題好了,回答一下,你不應該讀...