【轉】ACM訓練計劃

 

【轉】 POJ推薦50題以及ACM訓練方案
2010-08-21 21:05
轉載自 wade_wang
最終編輯 000lzl
POJ 推薦50題

第一類 動態規劃(至少6題,24792593 必作)

24792593
1015
1042(可貪心) 
1141
1050
1080
1221
1260
2411(稍難) 
1276

第二類 搜索(至少4題)

1011
1033
1129
2049
2056
2488
2492(稍難,也可並查集)

第三類 貪心(至少2題)

1065
2054(難)
1521
2709 

第四類 最短路 (至少3題)

1062 
1125 
1797 
2253
2679 Bellman-Ford (難) 

第五類 最小生成樹 (至少2題, 並且 Prim 和 Kruskal 至少各用一次)

1251

1258

1789

2485



第六類 最大流 (至少2題)

1087

1459

1149

2516 (最小費用最大流) (難)



第七類 二分圖 (至少3題)

1325

1469

2195 (KM 算法或最小費用最大流) (難)

2446

1422 and 2594



第八類 並查集 (至少2題)

1861

1182 (難)

1308

2524



第九類 快速查找 (B-Search, Hash and so on) (至少3題)

2503

2513 (+Euler迴路的斷定)

1035

1200

2002



第十類 數論 (至少2題)

1061

1142

2262

2407

1811(難)

2447 (難)


第十一類 線段樹 (無最少題數要求)

2352 (可用簡單方法)

2528


第十二類 計算幾何 (至少2題,1113凸包算法必作)

1113

1292

2148 (難)

2653

1584


第十三類 高精度 (至少3題,1001必作)

1001

1047

1131

1503

1504

1060 and 1996 (多項式)

SCU1002, 1003, 1004 (http://acm.scu.edu.cn/soj)


第十四類 模擬 (至少5題)

1029 and 1013

1083 and 2028

2234 and 1067

1012

1026

1068

1120

2271

2632


第十五類 數學 (至少4題)

2249

1023

2506

1079

1019 and 1095

1905 and 1064 (二分)

-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------

ACM訓練方案:

OJ上的一些水題(可用來練手和增長自信)
(poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)

初期:
一.基本算法:
(1)枚舉. (poj1753,poj2965)
(2)貪心(poj1328,poj2109,poj2586)
(3)遞歸和分治法.
(4)遞推.
(5)構造法.(poj3295)
(6)模擬法.(poj1068,poj2632,poj1573,poj2993,poj2996)
二.圖算法:
(1)圖的深度優先遍歷和廣度優先遍歷.
(2)最短路徑算法(dijkstra,bellman-ford,floyd,heap+dijkstra)
(poj1860,poj3259,poj1062,poj2253,poj1125,poj2240)
(3)最小生成樹算法(prim,kruskal)
(poj1789,poj2485,poj1258,poj3026)
(4)拓撲排序 (poj1094)
(5)二分圖的最大匹配 (匈牙利算法) (poj3041,poj3020)
(6)最大流的增廣路算法(KM算法). (poj1459,poj3436)
三.數據結構.
(1)串 (poj1035,poj3080,poj1936)
(2)排序(快排、歸併排(與逆序數有關)、堆排) (poj2388,poj2299)
(3)簡單並查集的應用.
(4)哈希表和二分查找等高效查找法(數的Hash,串的Hash)   
(poj3349,poj3274,POJ2151,poj1840,poj2002,poj2503)
(5)哈夫曼樹(poj3253)
(6)堆
(7)trie樹(靜態建樹、動態建樹) (poj2513)
四.簡單搜索
(1)深度優先搜索 (poj2488,poj3083,poj3009,poj1321,poj2251)
(2)廣度優先搜索(poj3278,poj1426,poj3126,poj3087.poj3414)
(3)簡單搜索技巧和剪枝(poj2531,poj1416,poj2676,1129)
五.動態規劃
(1)揹包問題. (poj1837,poj1276)
(2)型以下表的簡單DP(可參考lrj的書 page149):
1.E[j]=opt{D+w(i,j)} (poj3267,poj1836,poj1260,poj2533)
2.E[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最長公共子序列)    
(poj3176,poj1080,poj1159)
3.C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最優二分檢索樹問題)
六.數學
(1)組合數學:
1.加法原理和乘法原理.
2.排列組合.
3.遞推關係.
(POJ3252,poj1850,poj1019,poj1942)
(2)數論.
1.素數與整除問題
2.進制位.
3.同餘模運算.
(poj2635, poj3292,poj1845,poj2115)
(3)計算方法.
1.二分法求解單調函數相關知識.(poj3273,poj3258,poj1905,poj3122)
七.計算幾何學.
(1)幾何公式.
(2)叉積和點積的運用(如線段相交的斷定,點到線段的距離等). (poj2031,poj1039)
(3)多邊型的簡單算法(求面積)和相關斷定(點在多邊型內,多邊型是否相交)
(poj1408,poj1584)
(4)凸包. (poj2187,poj1113)


中級:
一.基本算法:
(1)C++的標準模版庫的應用. (poj3096,poj3007)
(2)較爲複雜的模擬題的訓練(poj3393,poj1472,poj3371,poj1027,poj2706)
二.圖算法:
(1)差分約束系統的創建和求解. (poj1201,poj2983)
(2)最小費用最大流(poj2516,poj2516,poj2195)
(3)雙連通份量(poj2942)
(4)強連通分支及其縮點.(poj2186)
(5)圖的割邊和割點(poj3352)
(6)最小割模型、網絡流規約(poj3308, )
三.數據結構.
(1)線段樹. (poj2528,poj2828,poj2777,poj2886,poj2750)
(2)靜態二叉檢索樹. (poj2482,poj2352)
(3)樹狀樹組(poj1195,poj3321)
(4)RMQ. (poj3264,poj3368)
(5)並查集的高級應用. (poj1703,2492)
(6)KMP算法. (poj1961,poj2406)
四.搜索
(1)最優化剪枝和可行性剪枝
(2)搜索的技巧和優化 (poj3411,poj1724)
(3)記憶化搜索(poj3373,poj1691)

五.動態規劃
(1)較爲複雜的動態規劃(如動態規劃解特別的施行商問題等)
(poj1191,poj1054,poj3280,poj2029,poj2948,poj1925,poj3034)
(2)記錄狀態的動態規劃. (POJ3254,poj2411,poj1185)
(3)樹型動態規劃(poj2057,poj1947,poj2486,poj3140)
六.數學
(1)組合數學:
1.容斥原理.
2.抽屜原理.
3.置換羣與Polya定理(poj1286,poj2409,poj3270,poj1026).
4.遞推關係和母函數.

(2)數學.
1.高斯消元法(poj2947,poj1487, poj2065,poj1166,poj1222)
2.機率問題. (poj3071,poj3440)
3.GCD、擴展的歐幾里德(中國剩餘定理) (poj3101)
(3)計算方法.
1.0/1分數規劃. (poj2976)
2.三分法求解單峯(單谷)的極值.
3.矩陣法(poj3150,poj3422,poj3070)
4.迭代逼近(poj3301)
(4)隨機化算法(poj3318,poj2454)
(5)雜題.
(poj1870,poj3296,poj3286,poj1095)
七.計算幾何學.
(1)座標離散化.
(2)掃描線算法(例如求矩形的面積和周長並,常和線段樹或堆一塊兒使用).
(poj1765,poj1177,poj1151,poj3277,poj2280,poj3004)
(3)多邊形的內核(半平面交)(poj3130,poj3335)
(4)幾何工具的綜合應用.(poj1819,poj1066,poj2043,poj3227,poj2165,poj3429)


高級:
一.基本算法要求: 
(1)代碼快速寫成,精簡但不失風格 
(poj2525,poj1684,poj1421,poj1048,poj2050,poj3306)
(2)保證正確性和高效性. poj3434
二.圖算法:
(1)度限制最小生成樹和第K最短路. (poj1639)
(2)最短路,最小生成樹,二分圖,最大流問題的相關理論(主要是模型創建和求解)
(poj3155, poj2112,poj1966,poj3281,poj1087,poj2289,poj3216,poj2446
(3)最優比率生成樹. (poj2728)
(4)最小樹形圖(poj3164)
(5)次小生成樹.
(6)無向圖、有向圖的最小環   
三.數據結構. 
(1)trie圖的創建和應用. (poj2778)
(2)LCA和RMQ問題(LCA(最近公共祖先問題) 有離線算法(並查集+dfs) 和 在線算法
(RMQ+dfs)).(poj1330)
(3)雙端隊列和它的應用(維護一個單調的隊列,經常在動態規劃中起到優化狀態轉移的
目的). (poj2823)
(4)左偏樹(可合併堆). 
(5)後綴樹(很是有用的數據結構,也是賽區考題的熱點).
(poj3415,poj3294)
四.搜索 
(1)較麻煩的搜索題目訓練(poj1069,poj3322,poj1475,poj1924,poj2049,poj3426)
(2)廣搜的狀態優化:利用M進制數存儲狀態、轉化爲串用hash表判重、按位壓縮存儲狀態、雙向廣搜、A*算法. (poj1768,poj1184,poj1872,poj1324,poj2046,poj1482)
(3)深搜的優化:儘可能用位運算、必定要加剪枝、函數參數儘量少、層數不易過大、能夠考慮雙向搜索或者是輪換搜索、IDA*算法. (poj3131,poj2870,poj2286)
五.動態規劃 
(1)須要用數據結構優化的動態規劃.
(poj2754,poj3378,poj3017)
(2)四邊形不等式理論.
(3)較難的狀態DP(poj3133)
六.數學 
(1)組合數學.
1.MoBius反演(poj2888,poj2154)
2.偏序關係理論.
(2)博奕論.
1.極大極小過程(poj3317,poj1085)
2.Nim問題.
七.計算幾何學. 
(1)半平面求交(poj3384,poj2540)
(2)可視圖的創建(poj2966)
(3)點集最小圓覆蓋.
(4)對踵點(poj2079)

八.綜合題.
(poj3109,poj1478,poj1462,poj2729,poj2048,poj3336,poj3315,poj2148,poj1263)

-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
補充
dp狀態設計與方程總結
1.不徹底狀態記錄
<1>青蛙過河問題
<2>利用區間dp
2.揹包類問題
<1> 0-1揹包,經典問題
<2>無限揹包,經典問題
<3>斷定性揹包問題
<4>帶附屬關係的揹包問題
<5> + -1揹包問題
<6>雙揹包求最優值
<7>構造三角形問題
<8>帶上下界限制的揹包問題(012揹包)
3.線性的動態規劃問題
<1>積木遊戲問題
<2>決鬥(斷定性問題)
<3>圓的最大多邊形問題
<4>統計單詞個數問題
<5>棋盤分割
<6>日程安排問題
<7>最小逼近問題(求出兩數之比最接近某數/兩數之和等於某數等等)
<8>方塊消除遊戲(某區間能夠連續消去求最大效益)
<9>資源分配問題
<10>數字三角形問題
<11>漂亮打印
<12>郵局問題與構造答案
<13>最高積木問題
<14>兩段連續和最大
<15>2次冪和問題
<16>N個數的最大M段子段和
<17>交叉最大數問題
4.斷定性問題的dp(如斷定整除、斷定可達性等)   
<1>模K問題的dp
<2>特殊的模K問題,求最大(最小)模K的數
<3>變換數問題
5.單調性優化的動態規劃
<1>1-SUM問題
<2>2-SUM問題
<3>序列劃分問題(單調隊列優化)
6.剖分問題(多邊形剖分/石子合併/圓的剖分/乘積最大)
<1>凸多邊形的三角剖分問題
<2>乘積最大問題
<3>多邊形遊戲(多邊形邊上是操做符,頂點有權值)
<4>石子合併(N^3/N^2/NLogN各類優化)
7.貪心的動態規劃
<1>最優裝載問題
<2>部分揹包問題
<3>乘船問題
<4>貪心策略
<5>雙機調度問題Johnson算法
8.狀態dp
<1>牛仔射擊問題(博弈類)
<2>哈密頓路徑的狀態dp
<3>兩支點天平平衡問題
<4>一個有向圖的最接近二部圖
9.樹型dp
<1>完美服務器問題(每一個節點有3種狀態)
<2>小胖守皇宮問題
<3>網絡收費問題
<4>樹中漫遊問題
<5>樹上的博弈
<6>樹的最大獨立集問題
<7>樹的最大平衡值問題
<8>構造樹的最小環
相關文章
相關標籤/搜索