順序串刪除指定字符:從 O(n²) 到 O(n) 的優化
問題 從順序串 S 中刪除所有等於字符 c 的字符。 朴素算法(低效) 雙層循環,每發現一個 c 就將後續字符前移,時間複雜度 O(n²)。 void Dele
POJ 3107 Godfather:樹形 DP 尋找重心
題目大意 給定一棵 n 個節點的樹,刪除一個節點後,剩餘各連通分量的最大節點數盡可能小。輸出所有滿足條件的節點編號。 解法:樹形 DP 計算子樹大小 對每個節點
POJ 3150 Cellular Automaton:矩陣快速冪與循環同構優化
題目概述 給定 n 個數字,每個數字範圍在 0 ~ m-1。定義兩數距離為 min(|i-j|, n-|i-j|)。進行 k 次變換,每次讓每個數變成與其距離
POJ 1472 Coins:多重背包與滾動數組兩種 Java 解法
題目大意 有 n 種硬幣,第 i 種面值 Aᵢ、數量 Cᵢ。求能湊出的金額在 1…m 之間有多少個。多組測試,n=0,m=0 結束。 方法一:多重背包二進制拆
Codeforces 340C Tourist Problem:全排列平均路徑長度的數學推導與 O(n) 解法
題目大意 有 n 個不同坐標點 a₁…aₙ(均為正整數),起點固定在 0。需訪問所有點恰好一次,順序任意,終點不返回 0。求所有 n! 種排列對應的總路徑長度的
UVA 103 Stacking Boxes:高維箱子嵌套最長路徑(DP + 記憶化搜索)
題目背景 給定 k 個 n 維箱子(k ≤ 30, n ≤ 10),每個箱子可任意重排維度。若箱子 D 經重排後每維均嚴格小於箱子 E 對應維度,則 D 可嵌套
順序串模式匹配:兩種子串查找算法解析與實現
問題描述 在主串 S 中,從第 index 個字符開始,查找首次與模式串 S1 完全匹配的子串起始位置。若不存在則返回 -1。 算法一:優化的暴力匹配(回溯法
HDU 1004 Let the Balloon Rise:Map 統計氣球顏色出現次數
題目大意 給定多組測試數據,每組包含 n 個氣球顏色字符串,找出出現次數最多的顏色並輸出。n=0 結束輸入。 解題思路 使用 std::map<stri
POJ 2375 Cow Ski Area:以 BFS 替代 Tarjan 解決棧溢出問題
題目背景與挑戰 POJ 2375「Cow Ski Area」要求在網格中尋找相同數值且相連的區域,並計算縮點後的入度與出度為零的節點數。傳統做法使用 Tarja
Ural 1018 Binary Apple Tree:經典樹形 DP 分組背包
Ural 1018 二叉蘋果樹:樹形 DP 保留 q 條邊的最大權值 給定帶邊權的二叉樹(根為 1),須保留恰好 `q` 條邊,形成以 1 為根的子樹,求最大權
RQNOJ 173 Fish學數學:並歸排序求逆序對數
RQNOJ 173 求逆序對:並歸排序分治統計 給定長度 `n`(≤1e6)的序列,求逆序對個數(`ia[j]`)。經典分治應用。 並歸排序中統計逆序對 合併
POJ 3667:線段樹維護最大連續空閒區間的酒店管理
POJ 3667 酒店管理:線段樹維護最大連續空房間 酒店 `n` 間房,操作: `1 a`:查詢是否有連續 `a` 間空房,有則入住最左端,輸出起始房號;否
1062 昂貴的聘禮:SPFA + 等級枚舉求最短路
問題描述 n 個物品,每個有價格 P[i]、等級 L[i]、可用較低等級物品換取的規則(有向邊,含費用)。主角等級 L[1],只能與等級差 ≤ m 的物品交易。
LeetCode Scramble String:擾亂字符串的四維 DP 判斷
LeetCode Scramble String:字符串擾亂等價性判斷 給定 `s1`、`s2`,判斷 `s2` 是否為 `s1` 的擾亂字符串。擾亂定義:遞歸
POJ 2228 Naptime:環狀 DP 的兩次求解技巧
POJ 2228 Naptime:環上選擇不相鄰時段的最大睡眠值 一天 `n` 個時段,每段有睡眠值。需選 `m` 個時段睡覺,任兩選中時段不相鄰(首尾也視為相
HDU 1394 / ZOJ 1484:旋轉序列最小逆序數的並歸排序解法
HDU 1394 最小逆序數:循環移位下的逆序對優化 給定 `0..n-1` 的排列,可循環左移(將後綴移到前面)。求所有移位下的最小逆序數。 關鍵觀察 輸入
HDU 1069 Monkey and Banana:箱子堆疊的 DP 與貪心排序
HDU 1069 Monkey and Banana:長方體堆疊最高塔 有 `n` 類長方體(`n≤30`),每類無限供應。長方體可旋轉(任意兩維作底面,第三維