HDU 1520 畢業聚會:樹形 DP 入門詳解與靜態鏈表存圖
問題建模 公司層級關係構成一棵樹,每個節點有「快樂值」。選擇邀請集合,限制:父子不能同時參加。求最大快樂值之和。經典「樹上最大權獨立集」。 DP 狀態定義
C++ 多線程框架(二):Mutex 互斥鎖與 Semaphore 信號量跨平台封裝
互斥鎖抽象基類 核心三操作:構造/初始化、Lock()、Unlock()。基類定義純虛函數,派生類實現平台相關邏輯(Windows CRITICAL_SECTI
POJ 1948 Triangular Pastures:三角形最大面積二維背包 DP
問題轉化 給 N (≤40) 條邊,必須全部用上拼成三角形三邊,求最大面積。周長 sum 固定,任取兩邊 a, b,第三邊 c = sum - a - b。只需
POJ 1837 Balance 天平平衡:動態規劃背包偏移數組法
物理建模 天平臂長 15,掛鉤位置 [-15..-1] ∪ [1..15],負為左臂、正為右臂。G (≤20) 個砝碼重量 1..25 互不相同。所有砝碼必須掛
POJ 1324 Holedox Moving:蛇狀 BFS 狀態壓縮與 4 進制編碼
問題建模 n×m (≤20) 網格,蛇長 L (≤8),身體佔據 L 個相鄰格子,頭 B1 尾 BL。每步頭移動到相鄰空格(非石頭、非身體),身體跟隨平移。求頭
HDU 4545 字符串匹配與字符映射:貪心單遍歷非 DP 解法
題目重述 給定兩個串 s1、s2 及 n 對字符映射 (x, y) 表示 x 可替換為 y。判斷能否通過刪除 s2 中某些字符、並利用映射替換,使 s2 變為
NYOJ 68 三點順序判斷:向量叉積決定順逆時針
幾何本質 給定不共線三點 A(x1,y1)、B(x2,y2)、C(x3,y3),判斷按 A→B→C 順序是順時針還是逆時針。構造向量 AB = (x2-x1,
HDU 4549 CD 命令最少操作次數:LCA 倍增法於目錄樹應用
問題轉化 目錄結構形成一棵有根樹(根為根目錄)。cd dir 相對路徑下潛,cd .. 向上一級。從目錄 A 到 B 的最少 cd 次數 = depth(A)
HDU 2512 卡片分組:第二類斯特林數動態規劃解法
問題建模 將 n 張互不相同的卡片分成若干非空組(組內無序、組間無序),求分組方案數模 1000。這正是第二類斯特林數 S(n, k) 的定義:n 個元素劃分為
HDU 1088 簡易 HTML 瀏覽器:標籤解析與 80 列換行實現
題目核心需求 模擬極簡 HTML 渲染:僅識別 <br>(換行)與 <hr>(水平分割線,輸出 80 個 -),其餘標籤忽略。輸入以空白
Linux C 語言讀取目錄完整實現:遞歸遍歷與命令行參數解析
核心 API 速覽 Linux 下目錄操作依賴 <dirent.h>: DIR *opendir(const char *name):打開目錄流
鏈表倒數第 K 節點查找:雙指針法與邊界條件完整解析
核心思路:快慢指針同步推進 尋找單向鏈表倒數第 k 個節點是經典面試題。最優雅的解法使用兩個指針 p1、p2:先讓 p1 走 k-1 步,此時 p1 指向正數第
無鎖佇列實戰:基於 CAS 的多執行緒安全佇列實作與效能對比
什麼是無鎖佇列? 無鎖佇列不使用互斥鎖,而是利用 CPU 原子指令(CAS, Compare-And-Swap)在硬體層面協調多執行緒存取,避免核心態切換開銷,
LeetCode Valid Number 合法數字驗證:有限狀態機與完整邊界條件處理
題目要求 判斷字串是否為合法數字。範例: 0 → true 0.1 → true abc → false 1 a →
Eclipse CDT 修改 Include Guard 為完整路徑:避免命名衝突的最佳實踐配置
問題背景 Eclipse CDT 新建頭檔時,預設 Include Guard 僅用檔名: #ifndef TEST_H_ #define TEST_H_ ..
POJ 1703 Find them, Catch them:帶關係的並查集(幫派敵友判斷)完整解析
問題描述 城市有兩個幫派,任意兩人要么同幫、要么敵對。給 N 人與 M 條資訊: D a b:a、b 屬於不同幫派 A a b:詢問 a、b 關係(同幫 /
HDU 1029 多數元素問題:Boyer-Moore 投票算法 O(n) 時間 O(1) 空間完美解法
題目大意 給定 N 個整數,其中某個數出現次數 ≥ N/2 + 1(即超過一半)。找出這個數。多組測資,N 為奇數。 三種解法比較 方法時間空間備註 Has
最大連續子序列和問題:從 O(n³) 窮舉到 O(n) 線性掃描,四大演算法完整演進
問題定義 給定整數序列,找出連續子序列的最大和。僅需輸出最大和,不需輸出區間。 範例:-2, 11, -4, 13, -5, -2 → 最大和 20 (11-4