手寫 memstr:在二進位緩衝區中高效尋找子串的實用技巧
C 標準庫提供了 strstr(字串找字串)、memchr(記憶體找字元)、memcmp(記憶體比較),卻唯獨缺少 memstr——在指定長度的二進位緩衝區中尋
NK1137 石子合併:環狀區間 DP 的 O(N³) 經典解法詳解
「石子合併」是區間動態規劃(Interval DP)的入門經典題型。NK1137 在線性合併基礎上增加了環狀限制:石子圍成一圈,每次只能合併相鄰兩堆,代價為兩堆
HDU 2222 關鍵字統計:AC 自動機模板與 TLE 優化實戰
在 ACM/ICPC 風格的競賽題目中,「多模式串匹配」是經典必考主題。HDU 2222 正是一道標準的 AC 自動機(Aho-Corasick Automat
從一個編譯錯誤看懂 gcc 與 g++ 的關鍵差異
許多 C++ 初學者在 Linux 環境下編譯程式時,都會遇到一個經典的困惑:明明程式碼沒錯、標頭檔也包正確、命名空間也用了,為什麼用 gcc 編譯卻噴出 un
C++ 操作 Access 數據庫封裝類 CADOConn:ADO 連接、查詢、列表綁定完整實現
類概覽 CADOConn 封裝 Microsoft ADO (ActiveX Data Objects) 操作 Access (.mdb) 與 Excel (.
Codeforces 179C Greg and Array:雙重差分 + 樹狀數組離線處理區間操作
問題描述 數組 a[1..n],m 個操作(每操作:區間 [l,r] 加 d),k 個查詢(每查詢:執行操作 [x,y])。最終輸出所有查詢後的數組。n,m,k
HDOJ 2188 哈密頓繞行世界問題:DFS 回溯找所有哈密頓環
問題描述 給定 20 個城市(編號 1-20),每城市恰好連接 3 條單向道路(輸入給出鄰接表)。從給定起點出發,找出所有經過每城市恰好一次並回到起點的路徑(哈
組合數取模 C(n,m) % 10^10:中國剩餘定理 + Lucas 定理推廣 + 周期性優化
問題背景 求 C(n, m) % 10^10,其中 n ≤ 10^18, 0 ≤ m ≤ n。直接計算不可能,需數論組合拳。 核心分解策略 模數分解:10^
LeetCode 51. N 皇後:回溯法生成所有合法棋盤佈局
題目描述 在 n×n 棋盤上放置 n 個皇後,使任意兩個皇後不在同一行、同一列、同一對角線。返回所有不同解法的棋盤佈局(Q 為皇後,. 為空)。 範例 n=4
LeetCode 2. 兩數相加:鏈表模擬逐位相加與進位處理
題目描述 兩個非空鏈表表示兩個非負整數,數字逆序存儲(個位在頭)。將兩數相加,返回和鏈表(同樣逆序)。 範例: (2→4→3) + (5→6→4) = 7→0→
LeetCode 66. 加一:數組模擬大整數加法,兩種遍歷方向對比
題目描述 給定非負整數的數字數組 digits(最高位在前),對該整數加一,返回新數組。 範例: [1,2,3] → [1,2,4];[9,9] → [1,0,
LeetCode 16. 最接近的三數之和:排序 + 雙指針 O(n²) 解法
題目描述 給定整數數組 S 和目標值 target,找出三個整數使其和最接近 target。返回這三數之和。假設唯一解。 範例: S = {-1,2,1,-4}
LeetCode 69. x 的平方根:二分法、牛頓迭代法與快速逆平方根
題目描述 實現 int sqrt(int x),計算並返回 x 的整數平方根(向下取整)。x 為非負整數。 解法一:二分查找(標準、穩健) 搜索區間 [0,
LeetCode 113. 路徑總和 II:DFS 回溯尋找所有根到葉路徑
題目描述 給定二叉樹根節點 root 和目標和 sum,找出所有從根到葉節點路徑,使路徑上節點值之和等於 sum。返回二維向量。 範例: sum=22,返回 [
LeetCode 67. 二進制求和:字串模擬加法與大數溢出陷阱
題目描述 給定兩個二進制字串 a、b,返回它們的和(也是二進制字串)。 範例: a=11, b=1 → 100 解法一:字串模擬逐位相加(推薦) 從最低位(字
HDU 1561 樹形 DP 入門:The More, The Better 選課問題
問題描述 給定一棵樹(根為 0),每個節點有價值 v[i]。從根出發選擇恰好 M 個節點(含根),使總價值最大。節點選擇需滿足:若選某節點,其祖先必須被選(即選
UVa 437 The Tower of Babylon:長方體堆疊最大高度(DP + 排序)
問題描述 給 n 種長方體,每種無限供應。將長方體按長、寬遞減順序堆疊(上層長寬嚴格小於下層),求最大總高度。長方體可旋轉,故每種產生 3 種放置方向(高度為三
Codeforces 13C Sequence:DP + 滾動數組求非遞減序列最小修改代價
問題描述 給定長度 n (≤5000) 的序列,可修改任意元素值,使序列變為非遞減。修改代價為 |原值 - 新值| 之和。求最小總代價。 關鍵性質:最優解中新