1.用cin輸入流和scanf函式讀入資料消耗的時間是不一樣的,當資料量很大時,用cin可能會超時,所以盡量用scanf輸入。
2.出現 runtime error 可能原因:
①除以零。
②陣列越界:int a[3]; a[10000000]=10;
③指標越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10;
④使用已經釋放的空間:int * p; p=(int *)malloc(5 * sizeof(int));free(p); *p=10;
⑤陣列開得太大,超出了棧的範圍,造成棧溢位:int a[100000000];
⑥提交前忘記刪掉stdin那一行。。。(親身re十次的慘痛經歷)
3.萬能標頭檔案:#include只要寫這乙個標頭檔案就不用寫別的了,但是提交的時候要選擇gcc編譯器。
4。對於不同的編譯器,即使是相同的**也可能會出現accepted和wrong answer或者是time limited exceed(超時)這樣的天差地別,所以沒頭緒的時候要考慮有沒有可能是這個原因。
5.int 型的數計算結果只能是int 所以比如i*ilong long int 。
6.輸出長整型數時用%lld和%i64d結果可能會有所不同,一般用%lld效果較好。
7.找不出bug時,可以在網上搜ac**,然後寫乙個隨機生成測試資料的程式,再寫乙個程式比較輸出結果有哪些不同,從中分析原因。
8.讀取字串中提取數字時,不要忘了減去48 。
9.負數取模時,題會預設結果為正數,如(-2)%7=5,但是電腦計算的時候,會使(-2)%7=-2,導致出錯,要在後面加一句if(ans<0) ans+=7;
10.當遇到只能通過第一組樣例時,往往是由於使用過的變數忘記初始化,
11.開發工具中執行到一半程式突然崩潰可能是scanf函式忘了加&,或是陣列越界了,還有就是定義的函式沒有返回值出口。
12.memset可比迴圈更快初始化陣列,在多維陣列中更為方便。
13.線段樹中用於線性儲存名字的陣列要足夠大(4*n)。
14.a乘2可以寫成a<<1;
15.endl的執行時間可能比'\n'慢一些。
(持續更新)
我的程式設計經驗
從寫一行 hello world 到如今,已經有七八年了,回想起來,真正讓自己技術得到提公升的關鍵點有三個方面,乙個是 實戰專案 乙個是 技術書籍 還有乙個就是 開源 毫無疑問,實戰專案 永遠是積累程式設計經驗最重要的途徑,專案越複雜,開發中遇到的問題越多,經驗的積累也越多,我相信任何一門技術,如果...
我的學習經驗
我的學習經驗,是根據我自己的學習經歷總結的,而且都是具有一定基礎後再學習另外乙個類似門類的知識的經驗。我自己的一些經驗 1.學習php。找了幾本入門教材,看了兩三天,然後花了一星期左右做了個小專案。由於php比較簡單,這裡就直接跳過了第二步。不過,專案雖然做好了,執行正常,但因為沒有參考別人的 肯定...
我的PMP考試經驗
個人感覺pmbok更像是一本專案管理知識的詞典,在沒有人講解的前提下通讀一遍,基本沒有什麼感覺。所以至少要在上許老師的課前課後各讀一遍,才能大致掌握其中的脈絡。古人云 學而不思則罔,思而不學則殆。學習pmp如果能結合自身的工作實際,很多東西是不需要死背硬記的。其次,再說說應試教育。大家作為中國人,受...