天天看點

學習計劃ACM集訓計劃

ACM集訓計劃

假設已有C/C++/JAVA中任何一門程式設計語言基礎,熟練掌握基本文法。

Step1: 入門hdu——water~,刷完http://acm.hdu.edu.cn/problemclass.php?id=74

Step2: 資料結構知識點——課本算法代碼熟敲。

資料結構需要掌握的内容(資料結構C語言版 嚴蔚敏|吳偉民):

第1章 緒論 算法和算法分析 (時間複雜度分析和空間複雜度分析)
第2章 線性表

2.1線性表的類型定義 2.2線性表的順序表示和實作

2.3線性表的鍊式表示和實作 (注意掌握循環連結清單和雙向連結清單)

第3章 棧和隊列

3.1棧的定義、表示和實作  3.2棧的應用舉例

3.4隊列的定義、表示和實作

(注意掌握循環隊列,以及循環隊列的數組實作)

第4章 串

掌握串在C語言中的表示方法、常用字元串函數

掌握簡單的模式比對算法

第6章 樹和二叉樹

6.1樹的定義和基本術語

6.2二叉樹

6.2.1二叉樹的定義 6.2.2二叉樹的性質(重點掌握)

6.2.3二叉樹的存儲結構

6.3 掌握二叉樹的周遊(先序、中序、後序)

6.4樹和森林

樹的存儲結構

森林與二叉樹的轉換(左孩子右兄弟法)

樹和森林的周遊

6.6赫夫曼樹及其應用

6.6.1最優二叉樹(赫夫曼樹)6.6.2赫夫曼編碼

第7章 圖

7.1圖的定義和術語

7.2圖的存儲結構  7.2.1數組表示法 7.2.2鄰接表

7.3圖的周遊

7.3.1深度優先搜尋 7.3.2廣度優先搜尋

7.4圖的連通性問題

7.4.1無向圖的連通分量和生成樹

7.4.3最小生成樹算法(prim && kruskal)

7.5有向無環圖及其應用

7.5.1拓撲排序

7.6最短路徑

        7.6.1單源最短路徑問題(dijkstra算法)

       7.6.2每一對頂點之間的最短路徑(floyd算法)

第9章 查找

9.1 掌握有序表的二分查找算法

9.3掌握哈希表的思想及簡單的hash算法(如取模法hash)

第10章 内部排序

10.1概述  10.2插入排序(掌握直接插入排序)

10.3快速排序(重點掌握)

10.4選擇排序

10.4.1簡單選擇排序 10.4.2樹形選擇排序 10.4.3堆排序

10.5歸并排序(重點掌握)10.7各種排序方法的比較

資料結構對應SDUTOJ題目 http://acm.sdut.edu.cn  Online Judge

資料結構實驗 必做題目
線性表 順序表 (01)1130
線性連結清單 (02)1138 (03)1139 (04)2116 (05)2117  (06)2118 (07)2119 (08)2120 (09)2121  (10)2122 (11) 2053
循環連結清單 (12)1197 (13)2056
雙向連結清單 (14)2504
多項式的表示及相加 (15)1482
棧和隊列 進制轉換 (16)1252 (17)2131
括号比對 (18)2134
行編輯程式 (19)1479
迷宮求解 (20)2449
表達式求值 (21)2132(22)2133(23)2484
雙向隊列 (24)1466
銀行管理 (25)2087
停車場問題 (26)2088
排隊買飯 (27)2135
字元串 字元串比較 (28)1333
字元串排序 (29)1334
字元串連接配接 (30)2124
字元串比對 (31)2125
KMP算法 (32)2463
字元串哈希 (33)1500
樹和二叉樹 二叉樹曆遍 (34)2137
樹的計數 (35)2136
赫夫曼樹 (36)2127
二叉排序樹 (37)2128 (38)2482
統計生成樹個數 (39)2129
鄰接矩陣表示法 (40)2141
鄰接表 (41)2142
深度優先搜尋 (42)2107
廣度優先搜尋 (43)1028
無向圖的連通分量個數 (44)1488
有向圖的強連通分量 (45)2506
最小生成樹 (46)2144
拓撲排序 (47)2140
關鍵路徑 (48)2498
最短路徑 (49)2413
查找 順序查找 (50)2040
二分查找 (51)2039
哈希表 (52)2123
内部排序 冒泡排序 (53)1196
選擇排序 (54)1582
快速排序 (55)2019
歸并排序 (56)2019
堆排序 (57)2019
插入排序 (58)1582
基數排序 (59)1591

Step3: 正式集訓

集訓第一天——POJ純水題 Like the following~~~

2017 1218 2000 1046 1218 1003 1004 10051008 1013(枚舉) 1207 1552 2105 2388 1316 2499 3006(篩法求素數)

正式集訓計劃:

第一階段初級:第1周-第4周
項目 時間 必做題目
基本算法 枚舉 第1周 (001)poj1753 (002)poj2965
貪心 (003)poj1328 (004)poj2109 (005)poj2586
分治法 (006)poj2524
遞推 (007)poj2506
構造法 (008)poj3295
模拟法 (009)poj1068 (010)poj2632  (011)poj1573 (012)poj2993  (013)poj2996
圖算法 圖的深度優先周遊和廣度優先周遊 第1周 (014)poj3278 (015)poj2049  (016)poj3083
最短路徑算法 (017)poj1860 (018)poj3259 (019)poj1062 (020)poj2253 (023)poj1125 (024)poj2240
最小生成樹算法 (025)poj1789 (026)poj2485 (027)poj1258 (028)poj3026
拓撲排序 (029)poj1094 (030)poj3267 (031)poj3687
二分圖的最大比對 (032)poj3041 (033)poj3020
最大流的增廣路算法 (034)poj1459 (035)poj3436
資料結構 第2周 (036)poj1035 (037)poj3080 (038)poj1936
排序 (039)poj2388 (040)poj2299
簡單并查集的應用 (041)poj1611
哈希表和二分查找等高效查找法 (042)poj3349 (043)poj3274 (044)poj2151 (045)poj1840 (046)poj2002 (047)poj2503
哈夫曼樹 (048)poj3253
堆,優先隊列 (049)poj2442 (050)poj1442
trie樹 (051)poj2513 (052)poj2418
簡單搜尋 深度優先搜尋 第2周 (053)poj2488 (054)poj3083 (055)poj3009 (056)poj1321 (057)poj2251
廣度優先搜尋 (058)poj3278 (059)poj1426 (060)poj3126 (061)poj3087 (062)poj3414
簡單搜尋技巧和剪枝 (063)poj2531 (064)poj1416 (065)poj2676 (066)poj1129
動态規劃 背包問題 第3周 (067)poj1837 (068)poj1276
型如下表的簡單DP

(069)poj3267 (070)poj1836 (071)poj1260 (072)poj2533 (073)poj3176 (074)poj1080

(075)poj1159

數學 組合數學 第3周 (076)poj3252 (077)poj1850 (078)poj1019 (079)poj1942
數論 (080)poj2635 (081)poj3292 (082)poj1845 (083)poj2115
計算方法 (084)poj3273 (085)poj3258 (086)poj1905 (087)poj3122
計算幾何學 幾何公式 第4周 (088)poj1265(pick定理)
叉積和點積的運用 (089)poj2031 (090)poj1039
多邊型的簡單算法和相關判定 (091)poj1408 (092)poj1584
凸包 (093)poj2187 (094)poj1113
第二階段中級:第4周-第9周
項目 時間 必做題目
基本算法 C++的标準模版庫的應用 第4周 (095)poj3096 (096)poj3007
較為複雜的模拟題的訓練 (097)poj3393 (098)poj1472 (099)poj3371 (100)poj1027 (101)poj2706
圖算法 差分限制系統的建立和求解 第5周 (102)poj1201 (103)poj2983 (104)poj3159 (105)poj1275 (106)poj1364
最小費用最大流 (107)poj2516 (108)poj2195 (109)poj3422
雙連通分量 (110)poj2942 (111)poj3694
強連通分支及其縮點 (112)poj2186 (113)poj3592 (114)poj3114
圖的割邊和割點 (115)poj3352
最小割模型 (116)poj3308 (117)poj3155
KM算法(最大權/最小權) (118)poj2195 (119)poj2400 (120)poj3686
資料結構 線段樹 第6周 (121)poj2528 (122)poj2828 (123)poj2777 (124)poj2886 (125)poj2750
靜态二叉檢索樹,平衡樹treap,splay (126)poj2482 (127)poj2352 (128)poj2892 (129)poj3468
樹狀樹組 (130)poj1195 (131)poj3321
RMQ (132)poj3264 (133)poj3368
并查集的進階應用 (134)poj1703 (135)poj2492
KMP算法 (136)poj1961 (137)poj2406
搜尋 最優化剪枝和可行性剪枝 第7周 (138)poj1699
搜尋的技巧和優化 (139)poj3411 (140)poj1724
記憶化搜尋 (141)poj3373 (142)poj1691
動态規劃 較為複雜的動态規劃 第7周 (143)poj1191 (144)poj1054 (145)poj3280 (146)poj2029 (147)poj2948 (148)poj1925 (149)poj3034
記錄狀态的動态規劃 (150)poj3254 (151)poj2411 (152)poj1185
樹型動态規劃 (153)poj2057 (154)poj1947 (155)poj2486 (156)poj3140
數學

組合數學,polya定理

置換群

第8周 (157)poj1286 (158)poj2409 (159)poj3270 (160)poj1026
高斯消元法 (161)poj2947 (162)poj1487 (163)poj2065 (164)poj1166 (165)poj1222
機率問題 (166)poj3071 (167)poj3440
GCD、擴充的歐幾裡德 (168)poj1061 (169)poj2891 (170)poj3101 (171)poj2115
計算方法(矩陣、三分等) (172)poj2976 (173)poj3150 (174)poj3422 (175)poj3070 (176)poj3301
随機化算法 (177)poj3318 (178)poj2454
雜題 (179)poj1870 (180)poj3296 (181)poj3286 (182)poj1095
計算幾何學 坐标離散化 第9周 (183)poj1151
掃描線算法 (184)poj1765 (185)poj1177 (186)poj1151 (187)poj3277 (188)poj2280 (189)poj3004
多邊形的核 (190)poj3130 (191)poj3335
幾何工具的綜合應用 (192)poj1819 (193)poj1066 (194)poj2043 (195)poj3227 (196)poj2165 (197)poj3429
第三階段進階:第10周-第18周
項目 時間 必做題目
基本算法 代碼快速寫成 第10周 (198)poj2525 (199)poj1684 (200)poj1421 (201)poj1048 (202)poj2050 (203)poj3306
保證正确性和高效性 (204)poj3434
圖算法 度限制最小生成樹和第K最短路,分數規劃 第10-11周 (205)poj1639 (206)poj3621 (207)poj2976 (208)poj3255 (209)poj2513 (210)poj2449
最短路,最小生成樹,二分圖,最大流問題的相關理論 (211)poj3155 (212)poj2112 (213)poj1966 (214)poj3281 (215)poj1087 (216)poj2289 (217)poj3216 (218)poj2446
最優比率生成樹 (219)poj2728(0/1分數規劃應用)
最小樹形圖 (220)poj3164(朱-劉算法)
次小生成樹 (221)poj1679(存在O(n^2)DP解法)
2-SAT問題 (222)poj3207 (223)poj3678 (224)poj3683 (225)poj3648 (226)poj2723 (227)poj2749
無向圖、有向圖的最小環 (228)poj1734(floyd擴充)
資料結構 trie圖的建立和應用,DFA 第12周

(229)hdu2222 (230)poj2778

(231)poj3691

LCA和RMQ問題 (234)poj1330
雙端隊列和它的應用 (235)poj2823
左偏樹 (236)poj3666 (237)poj3016
字尾樹,字尾數組 (238)poj3415 (239)poj3294 (240)poj2774 (241)poj2758
搜尋 較麻煩的搜尋題目訓練 第13周 (242)poj1069 (243)poj3322 (244)poj1475 (245)poj1924 (246)poj2049 (247)poj3426
廣搜的狀态優化 (248)poj1768 (249)poj1184 (250)poj1872 (251)poj1324 (252)poj2046 (253)poj1482
深搜的優化 (254)poj3131 (255)poj2870 (256)poj2286
動态規劃 需要用資料結構優化的動态規劃 第14-15周 (257)poj2754 (258)poj3378 (259)poj3017
四邊形不等式理論、斜率優化 (260)poj1160 (261)poj1180 (262)poj3709
較難的狀态DP、插頭DP (263)poj3133 (264)poj1739 (265)poj2411 (266)poj1763
數學 組合數學 第15周 (267)poj2888 (268)poj2154
博奕論 (269)poj3317 (270)poj1085
計算幾何 半平面求交 第16周 (271)poj3384 (272)poj2540
可視圖的建立 (273)poj2966
點集最小圓覆寫 (274)zju1450
對踵點 (275)poj2079
綜合題 第16-18周 (276)poj3109 (277)poj1478 (278)poj1462 (279)poj2729 (280)poj2048 (281)poj3336 (282)poj3315 (283)poj2148 (284)poj1263