本系列將以 C++ 為主要開發語言,結合演算法理論、STL、以及兩大經典題庫 CSES Problem Set 與 LeetCode 進行實戰演練。
內容安排由淺入深:
第一週:STL、排序、雜湊、前綴和等基礎演算法
第二週:雙指標、貪心、搜尋、BFS/DFS
第三週:動態規劃 (DP) 系列專題
第四週:圖論進階、字串演算法與綜合實戰
每天將透過理論解析 → C++ 實作 → 題目演練的方式,幫助讀者一步步掌握演算法核心思維,並透過實戰提升解題能力。
一、學習目標 把不同型態的 DP(計數型、最佳化型、線性 DP、環狀 DP、字串 DP)串起來。 熟練「狀態定義 → 轉移 → 初始條件 → 答案位置」的完整...
一、學習目標 正確判斷 Dijkstra 的適用條件:邊權 ≥ 0。 熟練最小堆(priority_queue with greater) 的寫法與「鬆弛(r...
一、學習目標 了解 Floyd–Warshall 的狀態定義與三重迴圈轉移,正確處理多重邊與自環。 學會在有多組查詢時,用 APSP(All-Pairs Sh...
一、學習目標 熟悉 Union-Find(Disjoint Set Union, DSU):路徑壓縮 + 按大小/秩合併。 會用 Kruskal 建立 最小生...
一、學習目標 了解拓撲排序的兩種常見實作:Kahn’s Algorithm(BFS/入度法) 與 DFS 反向後序。 能用拓撲序判斷是否為 DAG(有無有向環...
一、學習目標 了解 Prefix Function / 失配函數(π / LPS) 的定義與線性建表 O(n)。 熟練用 KMP 做單一樣式的字串搜尋 O(n...
一、學習目標 了解多項式滾動雜湊(Polynomial Rolling Hash) 的定義、前綴雜湊與 O(1) 取子字串雜湊。 熟悉單/雙雜湊、避免碰撞的實...
一、學習目標 熟悉樹的基本觀念:根、深度、高度、父子關係、直徑(diameter)。 會用 DFS/BFS 在 O(n) 內處理常見樹問題(最長路徑、節點最遠...
一、學習目標 掌握 樹上 DP 的三個典型套路: 子樹 DP(自底向上):狀態只看子樹(如最大匹配、子樹和)。 換根 DP(rerooting):先求某根的...
一、學習目標 會用 Binary Lifting(倍增法)在 O(logN) 內處理 k-th 祖先、LCA、兩點距離。 知道前處理要素:depth[]、up...