POJ 刷題指南
OJ上的一些水題(可用來練手和增加自信) (POJ 3299,POJ 2159,POJ 2739,POJ 1083,POJ 2262,POJ 1503,POJ 3006,POJ 2255,POJ 3094)
初期:
一.基本算法:
枚舉. (POJ 1753,POJ 2965)
貪心(POJ 1328,POJ 2109,POJ 2586)
遞歸和分治法.
遞推.
構造法.(POJ 3295)
模擬法.(POJ 1068,POJ 2632,POJ 1573,POJ 2993,POJ 2996)
二.圖算法:
圖的深度優先遍歷和廣度優先遍歷.
最短路徑算法(dijkstra,bellman-ford,floyd,heap+dijkstra) (POJ 1860,POJ 3259,POJ 1062,POJ 2253,POJ 1125,POJ 2240)
拓撲排序 (POJ 1094)
二分圖的最大匹配 (匈牙利算法) (POJ 3041,POJ 3020)
最大流的增廣路算法(KM算法). (POJ 1459,POJ 3436)
三.數據結構.
串 (POJ 1035,POJ 3080,POJ 1936)
排序(快排、歸並排(與逆序數有關)、堆排) (POJ 2388,POJ 2299)
簡單並查集的應用.
哈希表和二分查找等高效查找法(數的Hash,串的Hash) (POJ 3349,POJ 3274,POJ 2151,POJ 1840,POJ 2002,POJ 2503)
堆
trie樹(靜態建樹、動態建樹) (POJ 2513)
四.簡單搜索
深度優先搜索 (POJ 2488,POJ 3083,POJ 3009,POJ 1321,POJ 2251)
廣度優先搜索(POJ 3278,POJ 1426,POJ 3126,POJ 3087.POJ 3414)
簡單搜索技巧和剪枝(POJ 2531,POJ 1416,POJ 2676,POJ 1129)
五.動態規劃
背包問題. (POJ 1837,POJ 1276)
型如下表的簡單DP(可參考lrj的書 page149):
E[j]=opt{D+w(i,j)} (POJ 3267,POJ 1836,POJ 1260,POJ 2533)
C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最優二分檢索樹問題)
六.數學
組合數學:
加法原理和乘法原理.
排列組合.
遞推關系.
(POJ 3252,POJ 1850,POJ 1019,POJ 1942)
數論.
素數與整除問題
進制位.
同余模運算.
(POJ 2635, POJ 3292,POJ 1845,POJ 2115)
計算方法.
二分法求解單調函數相關知識.(POJ 3273,POJ 3258,POJ 1905,POJ 3122)
七.計算幾何學.
幾何公式.
叉積和點積的運用(如線段相交的判定,點到線段的距離等). (POJ 2031,POJ 1039)
多邊型的簡單算法(求面積)和相關判定(點在多邊型內,多邊型是否相交) (POJ 1408,POJ 1584)
凸包. (POJ 2187,POJ 1113)
中級:
一.基本算法:
C++的標準模版庫的應用. (POJ 3096,POJ 3007)
較為復雜的模擬題的訓練(POJ 3393,POJ 1472,POJ 3371,POJ 1027,POJ 2706)
二.圖算法:
差分約束系統的建立和求解. (POJ 1201,POJ 2983)
最小費用最大流(POJ 2516,POJ 2195)
雙連通分量(POJ 2942)
強連通分支及其縮點.(POJ 2186)
圖的割邊和割點(POJ 3352)
最小割模型、網絡流規約(POJ 3308)
三.數據結構.
線段樹. (POJ 2528,POJ 2828,POJ 2777,POJ 2886,POJ 2750)
靜態二叉檢索樹. (POJ 2482,POJ 2352)
樹狀樹組(POJ 1195,POJ 3321)
RMQ. (POJ 3264,POJ 3368)
並查集的高級應用. (POJ 1703,POJ 2492)
KMP算法. (POJ 1961,POJ 2406)
四.搜索
最優化剪枝和可行性剪枝
搜索的技巧和優化 (POJ 3411,POJ 1724)
記憶化搜索(POJ 3373,POJ 1691)
五.動態規劃
較為復雜的動態規劃(如動態規劃解特別的施行商問題等) (POJ 1191,POJ 1054,POJ 3280,POJ 2029,POJ 2948,POJ 1925,POJ 3034)
記錄狀態的動態規劃. (POJ 3254,POJ 2411,POJ 1185)
樹型動態規劃(POJ 2057,POJ 1947,POJ 2486,POJ 3140)
六.數學
組合數學:
容斥原理.
抽屜原理.
置換群與Polya定理(POJ 1286,POJ 2409,POJ 3270,POJ 1026).
遞推關系和母函數.
數學.
高斯消元法(POJ 2947,POJ 1487,POJ 2065,POJ 1166,POJ 1222)
概率問題. (POJ 3071,POJ 3440)
GCD、擴展的歐幾裏德(中國剩余定理) (POJ 3101)
計算方法.
0/1分數規劃. (POJ 2976)
三分法求解單峰(單谷)的極值.
矩陣法(POJ 3150,POJ 3422,POJ 3070)
叠代逼近(POJ 3301)
隨機化算法(POJ 3318,POJ 2454)
雜題. (POJ 1870,POJ 3296,POJ 3286,POJ 1095)
七.計算幾何學.
坐標離散化.
掃描線算法(例如求矩形的面積和周長並,常和線段樹或堆一起使用). (POJ 1765,POJ 1177,POJ 1151,POJ 3277,POJ 2280,POJ 3004)
多邊形的內核(半平面交)(POJ 3130,POJ 3335)
幾何工具的綜合應用.(POJ 1819,POJ 1066,POJ 2043,POJ 3227,POJ 2165,POJ 3429)
高級:
一.基本算法要求:
代碼快速寫成,精簡但不失風格 (POJ 2525,POJ 1684,POJ 1421,POJ 1048,POJ 2050,POJ 3306)
保證正確性和高效性. POJ 3434
二.圖算法:
度限制最小生成樹和第K最短路. (POJ 1639)
最短路,最小生成樹,二分圖,最大流問題的相關理論(主要是模型建立和求解) (POJ 3155, POJ 2112,POJ 1966,POJ 3281,POJ 1087,POJ 2289,POJ 3216,POJ 2446 )
最優比率生成樹. (POJ 2728)
最小樹形圖(POJ 3164)
次小生成樹.
無向圖、有向圖的最小環
三.數據結構.
trie圖的建立和應用. (POJ 2778)
LCA和RMQ問題(LCA(最近公共祖先問題) 有離線算法(並查集+dfs) 和 在線算法
(RMQ+dfs)).(POJ 1330)
雙端隊列和它的應用(維護一個單調的隊列,常常在動態規劃中起到優化狀態轉移
的目的). (POJ 2823)
左偏樹(可合並堆).
後綴樹(非常有用的數據結構,也是賽區考題的熱點). (POJ 3415,POJ 3294)
四.搜索
較麻煩的搜索題目訓練(POJ 1069,POJ 3322,POJ 1475,POJ 1924,POJ 2049,POJ 3426)
廣搜的狀態優化:利用M進制數存儲狀態、轉化為串用hash表判重、按位壓縮存儲
狀態、雙向廣搜、A算法. (POJ 1768,POJ 1184,POJ 1872,POJ 1324,POJ 2046,POJ 1482)
深搜的優化:盡量用位運算、一定要加剪枝、函數參數盡可能少、層數不易過大
、可以考慮雙向搜索或者是輪換搜索、IDA算法. (POJ 3131,POJ 2870,POJ 2286)
五.動態規劃
需要用數據結構優化的動態規劃. (POJ 2754,POJ 3378,POJ 3017)
四邊形不等式理論.
較難的狀態DP(POJ 3133)
六.數學
組合數學.
MoBius反演(POJ 2888,POJ 2154)
偏序關系理論.
博奕論.
極大極小過程(POJ 3317,POJ 1085)
Nim問題.
七.計算幾何學.
半平面求交(POJ 3384,POJ 2540)
可視圖的建立(POJ 2966)
點集最小圓覆蓋.
對踵點(POJ 2079)
八.綜合題.
(POJ 3109,POJ 1478,POJ 1462,POJ 2729,POJ 2048,POJ 3336,POJ 3315,POJ 2148,POJ 1263
POJ 刷題指南