北郵ACM推薦50題

著名的北郵ACM推薦50題

POJ推薦50題 一、標記「難」和「稍難」的題目能夠看看,思考一下,不作要求,固然有能力的同窗能夠直接切掉。 二、標記爲A and B的題目是比較類似的題目,建議你們兩個一塊兒作,能夠對比總結,且兩者算做一個題目。 三、列表中大約有70個題目。你們選作其中的50道,且每類題目有最低數量限制。 四、這裏很多題目在BUPT ACM FTP上面都有代碼,請你們合理利用資源。 五、50個題目要求每一個題目都要寫總結,養成良好的習慣。 六、這個列表的目的在於讓你們對各個方面的算法有個瞭解,也許要求有些苛刻,教條,請你們諒解,這些是咱們這些年的經驗總結,因此也請你們尊重咱們的勞動成果。 第一類 動態規劃(至少6題,2479 and 2593必作) 2479 and 2593 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 (二分) 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[i]+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) 經典題集: 1000:會教會你如何使用一個在線的ONLINE JUDGE。 1001:這道題教會你如何使用高精度運算,並須要你考慮高位的實數,因此要記錄一下小數點的位置。 1002:簡單題,初步瞭解ACM中的模擬題。模擬題就是不須要什麼算法的題目,只須要按照題目要求一步一步作。 1003——1008:簡單題,練習在線作題環境。 1012:約瑟夫問題的最簡單形式。 1013:簡單題。 1017:簡單題。 1019:數學+模擬 1023:簡單題。 1032:簡單題。 1045:簡單題。 1046:簡單題。 1051:簡單的字符串模擬題,推薦新手作。 1054:麻煩的模擬題,用來熟悉語言環境。 1060:多項式模擬題。 1047:麻煩的數學模擬。 1050:基礎的DP。 1061:擴展歐幾里德算法,經典題。 1067:簡單題。 1068:有時間的同窗可選作。 1080:簡單的DP。 1083:簡單題。 1088:經典的DP。 1100:解方程題,有模板。 1102:模擬題,很練代碼能力。 1106:計算幾何,入門題。 1132:簡單題。 1150:最後一位非0位是多少?今後題可學到這類問題的通用解法。 1159:比較簡單的DP,能夠給你一個全新的思想。 1163:比較簡單的DP。 1166:簡單的模擬題。 1182 1183 1207 1218 1247 1298 1306 1308 1316 1317 1326 1331 1338 1363 1011:深度優先搜索(如下簡稱DFS),可能須要花很長時間。值得多練。 1029:1013的升級版。 1014:貪心題? 1031:計算幾何 1458:經典的DP。 1401 1423 1426 1450 1455 1477 1488 1503 1504 1517 1035:字符串+模擬,比較麻煩。 1037:經典的動態規劃(如下簡稱DP),難。 1038:經典DP,難。 1042:經典的貪心題。 1048:較繁的模擬題。 1519 1528 1543 1547 1552 1555 1565 1575 1580 1581 1065:經典的貪心題。 1077:很是經典的8數碼問題。 1091:高精度。 1095:卡特蘭數,組合數學題,較難。 1099:經典的模擬題。 1589 1598 1606 1656 1658 1663 1674 1702 1723 1731 1107:字符串的模擬題。 1113:計算幾何,凸包+圓周長。 [概念:凸包:1)點集Q的凸包(convex hull)是指一個最小凸多邊形,知足Q中的點或者在多邊形邊上或者在其內。下圖中由紅色線段表示的多邊形就是點集Q={p0,p1,...p12}的凸包。 2)一組平面上的點,求一個包含全部點的最小的凸多邊形,這就是凸包問題了。這能夠形象地想成這樣:在地上放置一些不可移動的木樁,用一根繩子把他們儘可能緊地圈起來,這就是凸包了。] 1141:經典的DP。 1147:需數學功底。 1149:經典的網絡流。 1753 1775 1799 1844 1851 1862 1915 1922 1936 1953 1165:經典的搜索題。 1177:經典的線段樹。 1182:並查集,較難。 1190:經典的搜索+數學公式。 1191:數學性比較強的一道DP。 1969 1979 2000 2001 2007 2013 2017 2027 2039 2070 1201:差分約束,BELLMAN-FORD算法。 1204:經典的字符串自動機題目,難。 1286:POLYA定理的最簡單應用,組合數學。 1312:找規律的題目,須要打表計算。 1315:經典的DFS。
相關文章
相關標籤/搜索