LeetCode 🔴 3966. Count Good Integers in a Range
使用雙邊界限制的數位 DP,在一次遞迴中同時處理上下界與前導零,精確統計相鄰數位絕對差不大於 k 的好數個數。
LeetCode 🟡 3964. Minimum Lights to Illuminate a Road
給定一條道路和初始燈泡覆蓋範圍,求最少需要添加多少個半徑為 1 的燈泡才能使整條路都被照亮。使用差分陣列維護覆蓋狀態,並採用貪心策略,在遇到未覆蓋位置時,將燈泡放置在能覆蓋該位置的最右側(即當前位置 + 1)。
LeetCode 🔴 3445. Maximum Difference Between Even and Odd Frequency II
求長度至少為 k 且包含奇數次字元 a 與偶數次字元 b 的子字串最大出現次數差。由於字元集極小,可枚舉雙字元 (a, b),利用前綴和將區間差值轉化為枚舉右維護左的問題,並透過雙指標滑動窗口在 O(n) 時間內維護滿足長度、奇偶性與非空限制的最佳左端點。
LeetCode 🔴 2281. Sum of Total Strength of Wizards
利用 Monotonic Stack 求出每個元素作為最小值的左右邊界,並結合前綴和的前綴和,在 O(1) 時間內計算每個元素作為最小值的子陣列元素和之和,從而高效求出所有子陣列的總力量值。
LeetCode 🔴 862. Shortest Subarray with Sum at Least K
求和至少為 k 的最短非空子陣列長度。利用前綴和將區間和轉化為兩點差,並利用單調佇列優化下達成 O(n) 時間複雜度。
LeetCode 🟡 2212. Maximum Points in an Archery Competition
這是一道決策優化問題。因為得分區域僅有 12 個,既可以使用二進制狀態壓縮(Bitmask)枚舉所有得分組合,也可以將其建模為經典的 0/1 背包問題,利用動態規劃求解並進行路徑回溯。
LeetCode 🔴 956. Tallest Billboard
使用動態規劃維護兩個廣告牌的高度差與最大高度。每個鋼筋有三種選擇:加到第一座、加到第二座、或不使用。亦可使用折半搜索(Meet in the Middle)優化狀態空間。
Codeforces 🔵 CF1709E. XOR Tree
給定一棵樹,求最少修改幾次點權,使樹上任意簡單路徑的異或和均不為 0。利用樹上異或前綴和轉化為兩點前綴和與 LCA 點權的關係,使用自底向上以貪心策略與樹上啟發式合併解決。
LeetCode 🟡 1488. Avoid Flood in The City
透過有序容器(二分搜尋)或區間併查集(Union-Find),在下雨天與晴天之間進行貪心匹配,尋找最合適的抽水時機,避免湖泊溢出。
LeetCode 🟡 3356. Zero Array Transformation II
給定長度為 n 的陣列 nums 與 m 個區間減法查詢。每次查詢可選擇性將 [l, r] 範圍內的元素最多減少 val。求使整個陣列所有元素歸零所需的最小查詢前綴數量 k。若無法歸零,則返回 -1。本題有二分答案、雙指標單調性優化以及線段樹三種解法。
AtCoder 🟢 ABC387C Snake Numbers
統計區間內最高位嚴格大於其餘所有數位的正整數,可用上下界同步限制的數位 DP 解決。
AtCoder 🔵 ABC381F 1122 Subsequence
在值域僅 20 的條件下,用子集 DP 記錄形成合法 1122 子序列後的最早結尾位置,求可選數字種類數上限。
AtCoder 🟢 ABC381E 11/22 Subsequence
對每個區間查詢,求能作為 11/22 字串的最長子序列;對答案二分,檢查固定長度是否可行,檢查函數中再二分搜尋出可能的 `1` 和 `2` 的位置,最後用前綴和判斷中間是否有 `/`。
AtCoder 🟡 ABC381D 1122 Substring
枚舉相鄰配對起點,用滑動窗口維護每種數字只出現一對的最長 1122 子陣列。
AtCoder 🔵 ABC457F Second Gap
從後綴最大與次大的位置關係建立 DP,利用懶線段樹或全域乘法標記加速轉移。











