到現在總結的一些OI小tips

1.時間複雜度達到10^6 - 10^7已經接近超時邊緣
2.不能在函數裏開過大的數組,不然會直接RE爆掉
3.如果你的程序讓系統死機了,或者出現未知錯誤了,很有可能是你數組下標越界了(負值/開的太小),也有可能是你用的STL裏的queue隊列被你撐爆了
4.struct中的數讀取效率高於普通數組中的數的讀取效率
5.有時候剪枝剪的不對會使程序效率更低
6.在bfs中要讓隊列中的元素包含的某個值增加,統一加到一個全局變量上會導致距離計算不準確
7.不要把dfs中的參數變量用作循環中的累加器
(不要重名)
8.使用long long比使用int效率更低
9.在cena上用getline讀字符串會很慘
10.int 數組在dev-c++5.10上最大開到x1e7
short 數組在dev-c++5.10上最大開到x
1e9
12.鄰接矩陣x,y&&y,x都要存一遍
(一個高端操作:如果文字內容一張幻燈片容不下,可以考慮在幻燈片里加一個vb的文本框組件(怎麼加就是另一回事了,逃))
13.先想思路而不是胡打代碼(模板除外),看似很慢,但效果要好得多
14.dfs和bfs在連通塊問題裏一般用來消塊
15.枚舉情況時記錄之前已經遇到的情況,減少用時
16.輸出可以使用printf("%-5d",x)來同時保證左對齊和寬度爲5
17.線性篩素數注意把1設爲非素數
18.記憶化搜索注意在dfs末尾加上 數組[參數] [參數] =xxxx
19.考試遇到大模擬題先跑再說
20.排序好處多多。當要排的量與其他的一些量關聯時,對這個量進行排序,
其他相關的量也形成了一個序列,而這個序列從前往後剛好滿足這個被排序的量的順序的要求
21.++在變量前面 運行效率快於 ++在變量後面
22.在用鏈表解題是注意邊的數組大小是否需要多開幾倍
23.組合數注意

if(n < m)
	return 0;

24.有時候需要注意快速冪應使用慢速乘以確保正解

字符串專題

  • 讀入字符或字符串時儘可能採用while(不符合要求)cin 繼續讀入 的語句,防止讀入換行符或空格而丟分
  • 處理字符串時考慮字符串的包含關係,避免匹配替換字符串時加入的將相同部分跳過的優化將整個字符串跳過
  • 替換字符串分三步:(匹配部分之前)(匹配部分替換)
    (從i+替換後部分長度 到原長度-替換前部分長度+替換後部分長度 匹配部分之後餘下的部分的加入)
  • 在替換或寫入的起點和終點上多加考慮

c++好處都有啥

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章