C++ 單例模式演進史:從線程不安全到 C++11 最佳實踐
C++ 單例模式演進史:從線程不安全到 C++11 最佳實踐 單例模式是設計模式中最耳熟能詳的一種,但在多線程環境下正確且高效地實現卻經歷了多次演進。本文梳理從
Sicily 1034 Forest:判斷有向圖是否為森林並求最大寬度與深度
Sicily 1034 Forest 解題報告 題目要求判斷給定的有向圖是否構成一棵或多棵樹組成的森林,若合法則輸出最大深度與最大寬度,否則輸出 INVALID
main 函數執行前後的隱藏操作:啟動初始化與退出清理全流程
main 函數執行前後的隱藏操作 C++ 程序從操作系統加載到進入 main,再到退出返回,中間經歷了一系列自動完成的初始化與清理工作。理解這些細節有助於定位啟
C++ 對象大小計算深度解析:空類、虛繼承、對齊與虛函數表
C++ 對象大小計算深度解析 C++ 對象的大小取決於編譯器實現,本文以 MSVC 2003 (.NET 2003) 為例,系統梳理空類、普通成員、虛繼承、虛函
UVA 10130 SuperSale:多背包下的 0-1 背包解法
UVA 10130 SuperSale:多背包下的 0-1 背包解法 本題是一道經典的 0-1 背包變體,題目要求在多個獨立背包中挑選物品,使總價值最大。由於每
爬樓梯問題:費波那契數列與動態規劃(LeetCode 70)
問題描述 有 n 階樓梯,每次可爬 1 或 2 階。求到達頂部的不同方法數。 規律發現 n=1: 1種 [1] n=2: 2種 [1,1], [2] n=
POJ 2002 Squares:n 個點中求正方形個數(對角線法 + 二分查找)
問題描述 給定 n (≤1000) 個平面點,求能構成正方形的四元組數量。坐標絕對值 < 20000,多組測資以 n=0 結束。 核心幾何性質 正方形兩對角線
LeetCode 33 旋轉排序數組搜索:遞歸二分法實現
問題描述 在旋轉排序數組中查找目標值,返回索引,不存在返回 -1。數組無重複元素。 遞歸二分法思路 判斷當前區間 [left, right] 是否有序: 若
HDU 1158 Employment Planning:工人數量動態規劃最小化成本
問題描述 項目經理需規劃每月工人數量。已知: 項目月數 n ≤ 12 每月最少需要工人數 need[i] 雇傭成本 H,月薪 S,解僱成本 F 工人被雇傭後即
作業調度最小化扣分:貪心算法與截止日期排序(HDU 做作業 again)
問題描述 Ignatius 有 N 項作業(N ≤ 1000),每項作業需 1 天完成,有截止日期和逾期扣分。安排作業順序使總扣分最小。 貪心策略 按扣分從大
FZU 2112 票券旅行:圖論歐拉路徑與連通分量
問題描述 贏得一些豪華郵輪船票,每張票可在兩個城市間雙向使用一次。可免費飛往任意城市開始,也可從任意城市免費飛回。要用完所有船票,最少需要購買多少額外船票?
HDU 1070 Milk:結構體與單位換算的貪心選擇
問題描述 Ignatius 每天喝 200ml 牛奶。超市有多種牛奶,每種有品牌名、價格(元)、體積(ml)。選擇單日成本最低的牛奶。規則: 牛奶生產 6 天
Codeforces 219A k-String 構造:字符頻率分配判定
問題描述 給定整數 k 和字符串 s,判斷能否將 s 重新排列成一個 k-string:即某個字符串 T 重複 k 次構成(s = T + T + ... +
約瑟夫環變體:POJ 3379 字符串環操作逆向思維解法
問題描述 給定長度為 n 的字符串環(大寫字母)。每次隔 k 個字符,在對應位置插入該字符的下一個字母(Z 後循環到 A),執行 m 次(m ≤ 10⁹)。求最
LeetCode 148 鏈表排序:歸並排序 O(n log n) 完整實現
問題描述 對單鏈表進行排序,要求時間複雜度 O(n log n),空間複雜度 O(1)(或 O(log n) 遞歸棧)。 為什麼選擇歸並排序? 快速排序需要
生成 N 個不重複隨機數(範圍 0~N-1)的高效算法
問題描述 需要從 0 到 N-1 的整數中,均勻隨機選取 N 個不重複的數。即生成一個 0~N-1 的隨機排列。 方法對比 方法時間複雜度空間適用場景 集合
LeetCode 120 三角形最小路徑和:動態規劃三種解法對比
問題描述 給定一個三角形二維數組,從頂層到底層,每步只能移動到下一行相鄰的兩個數字中。求路徑和的最小值。 示例 [ [2], [3,4],
密碼驗證規則判斷(HDU 1039 Easier Done Than Said?)
問題描述 判斷一個密碼字符串是否「可接受」,需同時滿足三條規則: 至少包含一個元音字母(a, e, i, o, u) 不包含三個連續元音或三個連續輔音 不包含