ACM知识点分类
(知識點分類。看完想(╯‵□′)╯︵┻━┻)
orz...一點點來吧。簡單標記一下。
藍色,比較熟悉,能夠做。
藍綠色,一般熟悉,需要加強
紅色,(比個辣雞.jpg)
(標記完突然想打人。。。)
第一類:基礎算法
(1)?????基礎算法:枚舉,貪心,遞歸,分治,遞推,構造,模擬
(2)?????動態規劃:背包問題,樹形dp,狀態壓縮dp,單調性優化,插頭dp
(3)?????搜索:dfs,bfs,記憶化搜索,優化與剪枝,雙廣,A*,IDA*,跳舞鏈
?
第二類:數據結構
(1)?????簡單數據結構:鏈表,棧和隊列,串,樹和二叉樹,圖,排序與檢索
(2)?????樹形結構:線段樹,樹狀數組,字典樹,伸展樹,左偏樹,動態樹,lca&rmq,劃分樹,SBT
(3)?????字符串:kmp,AC自動機,后綴數組,最小表示法
(4)?????其他:并查集,散列表,塊狀鏈表,雙向鏈表
?
?
第三類:圖論
(1)?????最短路:dijkstra,bellman-ford(spfa優化),floyd,heap+dijkstra?,差分約束,第K最短路
(2)?????生成樹:prim,kruskal,?度限制最小生成樹, 最優比率生成樹, 次小生成樹, 最小樹形圖,生成樹的計數,樹的劃分,樹的枚舉
(3)?????匹配問題:二分圖的最大匹配 (匈牙利算法),KM,2-SAT,同構
(4)?????網絡流:最大流,最小費用最大流,最小割模型、網絡流規約
(5)?????其他:拓撲排序,雙連通分量,強連通分支及其縮點,圖的割邊與割點,無向圖、有向圖的最小環,歐拉路徑,哈密頓路徑,平面圖,分層圖思想,偶圖
?
?
第四類:數學
(1)?????數論:素數和整除問題,進位制,同余模算術,整數因子分解,GCD,擴展歐幾里得,求解模線性方程,中國余數定理,元素的冪,RSA公鑰加密
(2)?????組合數學:加法和乘法原理,排列組合,遞推關系和母函數,容斥原理,抽屜原理,置換群與Polya定理,MoBius反演,偏序關系理論
(3)?????計算方法:二分法求解單調函數相關知識,三分法求解單峰(單谷)的極值,矩陣法,迭代逼近,高斯消元法,隨機化算法,0/1分數規劃
(4)?????高精度問題擴展:求倒數,求乘冪,求開方,求對數,二分快速方法,對指函數,三角函數,數值計算的優化
(5)?????其他:博弈論,線性規劃,整數規劃,概率問題,多項式與快速傅里葉,數學思想與方法的綜合運用(構造,猜想,歸納法,反證法)
?
?
第五類:計算幾何
(1)??????????判斷線段相交,判斷直線相交,判斷點是否在多邊形內,
(2)??????????凸多邊形面積&重心計算,求外接圓與內接圓,
(3)??????????求凸包,最近點對問題,最遠點對問題,
(4)??????????點集或圖形集合的最小覆蓋圓,點集或圖形集合的最小覆蓋矩形,
(5)??????????矩形的交與并(掃描法),
(6)??????????三角剖分,費爾馬點的計算,Pick定理
(7)??????????常用幾何公式
?
【轉載】http://blog.csdn.net/xuanandting/article/details/52160859 (訓練計劃值得一看)
第一階段:練經典常用算法,下面的每個算法給我打上十到二十遍,同時自己精簡代碼,因為太常用,所以要練到寫時不用想,10-15分鐘內打完,甚至關掉顯示器都可以把程序打出來。
?
1.最短路(Floyd、Dijstra,BellmanFord)?
2.最小生成樹(先寫個prim,kruscal要用并查集,不好寫)?
3.大數(高精度)加減乘除
4.二分查找.?(代碼可在五行以內)?
5.叉乘、判線段相交、然后寫個凸包.?
6.BFS、DFS,同時熟練hash表(要熟,要靈活,代碼要簡)?
7.數學上的有:輾轉相除(兩行內),線段交點、多角形面積公式.?
8.?調用系統的qsort,?技巧很多,慢慢掌握.?
9.?任意進制間的轉換
?
第二階段:練習復雜一點,但也較常用的算法。?
如:?
1.?二分圖匹配(匈牙利),最小路徑覆蓋?
2.?網絡流,最小費用流。?
3.?線段樹.?
4.?并查集。?
5.?熟悉動態規劃的各個典型:LCS、最長遞增子串、三角剖分、記憶化dp?
6.博弈類算法。博弈樹,二進制法等。?
7.最大團,最大獨立集。?
8.判斷點在多邊形內。?
9.?差分約束系統.?
10.?雙向廣度搜索、A*算法,最小耗散優先.
?
第三階段:
????前兩個階段是打基礎,第三階段是鍛煉在比賽中可以快速建立模型、想新算法。這就要平時多做做綜合的題型了。?
1.?把oibh上的論文看看(大概幾百篇的,我只看了一點點,呵呵)。?
2.?平時掃掃zoj上的難題啦,別老做那些不用想的題.(中大acm的版主經常說我挑簡單的來做:-P?)?
3.?多參加網上的比賽,感受一下比賽的氣氛,評估自己的實力.?
4.?一道題不要過了就算,問一下人,有更好的算法也打一下。?
5.?做過的題要記好?:-)
轉載于:https://www.cnblogs.com/changer-qyz/p/8448171.html
總結
- 上一篇: [转]30个总结JVM虚拟机的技术文排版
- 下一篇: 标准差(Standard Deviati