要看的書:
<算法導論>
<算法藝術與信息學競賽>
<圖論的算法與程序設計>
<國際大學生程序設計競賽例題解>
<基本算法>
<騙分導論>
<國際大學生程序設計競賽例題解(一)>-<數論、計算幾何、搜索算法專集>
<國際大學生程序設計競賽例題解(三)>-<圖論、動態規劃算法、綜合題專集>
學習規劃:
一、第一階段(11月13日 – 12月4日)主要完成的算法:
1、基本數據結構:
線性表、鏈表(尤其雙向鏈表和循環鏈表)、棧、二叉樹
2、加減乘除四則運算的高精度算法
3、了解算法思想:DP、貪心、二分
4、查找與排序:
二分查找、二叉排序數、qsort函數、歸并排序、HASH
5、圖論基礎算法:
DFS、BFS、MST(Prim)、Dijkstra、Floyd 、拓撲排序、割點
6、數學知識:初等數論(整除、同余)
二、第二階段(12月25日 – 2月1日)主要完成的算法:
1、高級數據結構:
堆、并查集及路徑壓縮(Kruskal)、線段樹
2、圖論高級算法:
二分圖匹配(匈牙利算法)、網絡流、最小費用流、最大團、最大獨立集、中國郵路問題、找Hamilton圈、尋找歐拉回路、著色問題、連通性判定、傳遞閉包和差分約束系統
3、博弈算法:博弈樹、尋找必敗類算法
4、計算幾何:
判斷線段相交、判斷點是否在多邊形內、凸包、矩形的交與并、兩直線相交問題、已知三點求圓心
5、高級數學知識:(組合數學、具體數學中為主)
Fibonacci、Catalan數的應用、差分序列和Stirling數、Burnside定理和置換群、容斥原理、概率問題、生成排列數
6、高級搜索技巧:
雙向BFS、A*算法(啟發式搜索)、最小消耗優先、變深度優先搜索
三、三個算法思想的具體訓練內容:
1)、DP 重中之重 (準備拿出3天做DP一種類型)
要解決的經典例題:
1、 最長不下降子序列(Longest Increasing Subsequence)
2、 最長公共子序列 (Longest Common Subsequence)
3、 矩陣鏈乘法 (Matrix Multiplication)
4、0-1背包
5、凸多邊形的最優三角劃分
6、多邊形游戲 ---- 三角大戰
2)、Greedy 貪心算法 高效優選算法
要解決的經典問題:
1、0-1背包
2、MST(Prim、Kruskal)
3、Dijkstra
4、Huffman Tree Code(霍夫曼編碼)
3)、二分法
要解決的經典問題:
1、 歸并排序算法求逆序數 (Inversion Number)
2、 最近點對
3、 幾種常見算法的二分查找優化:LIS (最長不下降子序列)