動態規劃入門經典:數塔問題(自底向上 DP 求最大路徑和)
數塔問題是動態規劃的教科書級入門例題。給定高度 N (≤100) 的數塔,從頂層走到底層,每步只能走到相鄰節點,求經過節點數字之和的最大值。 問題示例
循環緩衝區類設計:C++ 實現環形隊列(面試真題)
需求分析 固定容量緩衝區,支持: `Write(buf, count)`:寫入數據,返回實際寫入字節數 `Read(buf, count)`:讀取數據,返回實
CodeChef Not a Triangle:排序 + 雙指針計數三元組
題目大意 給定數組,計算有多少三元組 `(a,b,c)` 無法構成三角形(即 `a + b < c`,假設 `a ≤ b ≤ c`)。 核心觀察:排序後雙指針
斜率優化 DP 專題:BZOJ 1911 特別行動隊(APIO 2010)
題目大意 序列 `a[1..n]`,將其分段,每段得分 `A*(sum)^2 + B*sum + C`,求最大總分。n ≤ 1e6。 DP 方程 `dp[i]
C++ string 與文件流操作:按行讀寫、字符串查找、C 風格互轉
核心類與方法 `std::string`:動態字符串,自動內存管理 `std::ifstream`:輸入文件流 `std::ofstream`:輸出文件流 `
C++ Primer 學習筆記:運算符重載基礎——定義規則與限制
運算符重載基本規則 不可創建新運算符:只能重載現有運算符 不可改變運算元個數:一元/二元性質固定 不可改變優先級與結合性:與內建類型一致 不可重載的運算符:`
POJ 2182 Lost Cows:線段樹求第 k 小還原排列
題目大意 N 頭牛(編號 1..N)亂序站成一排。給定每頭牛前面有多少頭編號更小的牛(第 1 頭固定為 0)。求原始排列。N ≤ 8000。 核心洞察:逆序構
UVA 12105 Bigger is Better:火柴棒拼數字 DP + 字符串狀態
題目大意 給定 n 根火柴棒,數字 0-9 分別消耗 `{6,2,5,5,4,5,6,3,7,6}` 根。組成一個能被 m 整除的最大整數(無前導零,除非是 0
C++ Primer 學習筆記:運算符重載——輸入輸出、算術、關系運算符
運算符重載分類 輸入/輸出運算符:`operator`(必須為非成員函數/友元) 算術運算符:`+ - * / %` 等(建議非成員,支持隱式轉換) 關系運算
UVA 10641 Barisal Stadium:DP + 計算幾何求照明覆蓋
題目大意 凸多邊形操場,順時針給出頂點。M 個可建燈塔位置,每個有費用。燈塔照射範圍與操場邊界相切。求最小費用覆蓋所有邊。N ≤ 100, M ≤ 1000。
HDU 1806 Frequent Values:離散化 + RMQ 區間最頻值查詢
題目大意 給定非遞減數列 `a[1..n]`,查詢區間 `[l, r]` 中出現次數最多的數字的頻次。n, q ≤ 100,000。 核心觀察:相同數字連續分
斜率優化 DP 專題:BZOJ 1096 倉庫建設詳解
題目大意 N 個工廠沿山坡分布(高度遞減),第 i 廠距頂端距離 `X[i]`,現有產品 `P[i]` 件,建倉庫費用 `C[i]`。產品只能往下運(向大編號)
Java 鏈表基礎實現:Node 與 LinkedList 類設計
核心類設計 Node 節點類 public class Node { private Object data; private Node ne
CodeChef The Ball And Cups:翻轉區間後小球位置追蹤
題目大意 N 個杯子排成一行,小球初始在第 C 個。進行 Q 次操作,每次翻轉區間 [L, R](即對稱交換)。求最終小球位置。N ≤ 10⁵, Q ≤ 10⁴
C++ string 截取指定子串左右部分:find + substr 實戰
需求場景 給定字符串 `cjc is a good boy`,以 `good` 為分界,分別獲取左側 `cjc is a ` 和右側 `good boy`。
Boost.Thread 線程同步與線程組實戰:mutex、condition_variable、thread_group
核心組件 boost::mutex:互斥鎖,保護共享數據 boost::condition_variable_any:條件變量,實現線程等待/通知 boost
LeetCode Trapping Rain Water:雙指針與前後綴最大值法
題目大意 給定非負整數數組 `height` 表示柱狀圖高度,寬度為 1。計算下雨後能接多少雨水。 例:`[0,1,0,2,1,0,1,3,2,1,2,1]`
HDU 4722 Good Numbers:數位 DP 統計位數和為 10 倍數
題目大意 給定區間 [a, b],統計有多少數字的「各位數字之和」是 10 的倍數。多組測試數據。 核心思路:數位 DP 定義 `dp[pos][sum]`: