分類ios
1、小數據範圍,須要枚舉,求最大或最小值算法
搜索,for循環枚舉數組
2、數據較大,也有枚舉特徵,或等差序列網絡
動態規劃函數
3、題目比較長,題中有對流程的描述spa
模擬code
4、看起來像數學中的找規律題blog
數論,想不出公式就遞推隊列
5、給了一個圖,找最短路徑element
最短路算法
6、給了一個圖,判斷圖的連通性並在連通時求最大或最小花費
生成樹
7、在一段區間裏修改或求和
線段樹、樹狀數組、模擬
8、最大值最小或是最小值最大或判斷一個數成不成立
二分答案
9、素數的判斷
枚舉到根號a。
10、中位數與最小值
均分紙牌問題。
11、網絡流的限流
新建一個匯點,連一條流量爲限制流量的邊。
12、把一個數的每一位拼成一個整數
for(int i=t1;i>=1;i--) { tot=tot*10+ori[i]; }
十3、帶權二分圖最大匹配
源點到左邊點流量爲1,費用爲0;左邊點到能匹配的右邊點流量爲1,費用爲邊權;左邊點到匯點流量爲1,費用爲0。
十4、平面圖染色
顏色=2時,若是n是基數則方案數爲0,n是偶數則方案數爲2。
十5、詢問一些序列中最多重複的個數
作一個統計序列,在序列的左端點+1,右端點-1,而後作這個序列的前綴和。
十6、bitset神器
這玩意所佔空間是相同元素個數的bool數組的1/8,運行時間是1/32(32位系統)或1/64(64位系統)。
十7、cctype庫函數
十8、堆的複雜度計算
log(堆的大小),與輸入數據的規模無關。
十9、nth_element(first,kth,last)函數
使第k大元素處於第k位置,而且比這個元素小的元素都排在這個元素以前,比這個元素大的元素都排在這個元素以後,但不能保證他們是有序的。
二10、long double類型函數
在通常的cmath函數後面加一個l,不然即便傳參是long double,計算的結果也是double。輸入/出long double最靠譜的方式是用double類型輸入/出而後轉成 long double。
二11、位運算^
若是a^b==2,那麼a^2==b。
二12、數對個數
可重:n(n-1)。不可重:n(n-1)/2。
二十3、優先隊列的comp
大小於號方向與元素大小相反
#include <queue> #include <iostream> using namespace std; struct cmp { bool operator()(int i, int j) {return i < j;} }; int main() { priority_queue<int, vector<int>, cmp> q; for (int i = 0; i < 5; i++) {q.push(i);} for (int i = 0; i < 5; i++) {cout << q.top() << ' '; q.pop();} return 0; }
暫時這些,想到在更。