基本算法 |
C/C++、STL(vector、set、map、queue、string、algorithm)數組 枚舉、貪心、遞歸、分治、遞推、模擬網絡 構造、位運算、常數優化數據結構 |
數據結構閉包 |
隊列、堆、棧、鏈表ide 排序(插入、冒泡、快速、歸併、堆、桶、基數)函數 二分查找、散列表、並查集、哈夫曼樹測試 排序二叉樹、左偏樹、平衡樹(Splay/Treap/SBT)優化 樹狀數組、線段樹、歸併樹、劃分樹、主席樹、樹套樹spa 樹鏈剖分、動態樹 1/2維RMQ、LCA(在線/離線)、稀疏表、字典樹 |
字符串 |
KMP、擴展KMP AC自動機 後綴樹、後綴數組、後綴自動機 LCP隨機化算法 最小表示法 |
搜索 |
DFS、BFS、剪枝、雙向寬搜 迭代加深、A*、ID-A* Dancing-links 登山法、模擬退火、遺傳算法 |
數學 |
進制轉換、表達式求值 二分、三分 機率論、微積分 高精度(加減乘除模開方) 高精實數、分數 快速冪、矩陣、矩陣鏈乘 多項式求根、牛頓迭代 高斯消元解線性方程組 組合數學、排列組合計數 容斥原理、抽屜原理、mobius反演 置換羣、burnside 引理、Polya定理、母函數 卡特蘭數、斯特林數 傅立葉變換(大數乘法) 半平面交解二元線性規劃、單純形法解線性規劃 約瑟夫問題 0/1分數規劃 |
數論 |
GCD、擴展歐幾里德 篩法求素數、素數斷定 同餘方程、中國剩餘定理 大素數測試、分解 歐拉函數、積性函數、法蘭數列 逆元、離散對數 |
圖論 |
基本概念(DFS生成樹上邊,橋,割點,割,雙連通份量) 圖的表示(矩陣、鄰接表) 最短路(Dijkstra(+heap)、Floyd、Bellmen-ford、Spfa)、傳遞閉包 最小生成樹 強聯通份量(+縮點) 拓撲排序 橋、邊雙連通份量及性質 割點、點雙連通份量 度限制生成樹、次小生成樹、最優比例生成樹 最小樹形圖 次短路(Dijkstra)、K短路(A*) 差分約束系統 2-SAT 歐拉路徑(迴路)、漢密爾頓路(迴路) 網絡流(SAP、Dinic) 最大流最小割、平面圖最小割、全局最小割Stoer-Wagner算法 最小費用最大流 有流量上下界的網絡流(費用流) 無源匯的網絡流 二分圖匹配、二分圖最大權匹配 任意圖匹配(帶花樹) 最大權閉合子圖、最大密度子圖 最大團、最大獨立集 |
計算幾何 |
基本操做: 叉積、點積 向量平移、旋轉 線段(直線、射線)相交的判斷、求交點 點、線段、直線、平面關係、距離 點在多邊形內/外/上 多邊形周長、面積 二維凸包 最近點對、最近圓對 旋轉卡殼 計算距離:凸多邊形直徑、形寬,凸多邊形間的最大、最小距離 外界矩形:最小周長、最小面積外界矩形 三角剖分:洋蔥、螺旋、四邊形剖分 凸多邊形屬性:凸包合併、找公切線、臨界切線、凸多邊形相交、凸多邊形矢量和 最薄截面:最薄橫截帶 三角形 球面距離 三維幾何基本操做 向量平移、旋轉 點、線、面 三維凸包 點集的最小覆蓋圓 最大空心矩形 圓的面積交/並 圓與圓的位置關係 圓與線段、多邊形的關係、面積 半平面交 自適應simpson公式 steiner生成樹 |
動態規劃 |
記憶化搜索 最長公共子序列 最長上升序列 揹包九講(0/一、徹底、依賴、分組、泛化物品) 四邊形不等式優化、斜率優化、單調隊列(1D\1D) 數據結構優化(線段樹優化、堆優化、左偏樹優化) 樹形DP、自動機DP 數位DP、狀態壓縮DP、插頭DP、廣義插頭(最小表示) |
博弈論 |
Bash Game、Wythoff Game NIM、SG函數 搜索、極大極小搜索 無向圖刪邊博弈 |
其餘 |
曆法、日期漢諾塔
離散化 找規律 打表 |