遞歸搜索專題:組合生成、子集和、生日西瓜分配
經典遞歸搜索模板 遞歸搜索(DFS)通過「選 / 不選」或「枚舉下一步」遍歷解空間樹,配合剪枝可解決組合、排列、子集和等問題。 1. 組合生成(NY 325)
HDU 2066 一個人的旅行:多源最短路 SPFA
問題描述 給定無向圖,T 條邊,S 個起點,D 個終點。求任意起點到任意終點的最短距離。 超級源點技巧 新增虛擬節點 0,向每個起點連邊權 0 的有向邊。 從
HDOJ 5396 Expression:區間 DP 計算所有運算順序結果之和
問題重述 給定 n(≤ 100)個數字與 n−1 個運算符(+、−、*),按任意順序結合(每次選相鄰兩數及其間運算符計算),求所有可能運算順序的最終結果之和,模
HDU 1233 還是暢通工程:最小生成樹 Prim 與 Kruskal 實現
問題描述 給定 n(≤ 100)個點的完全圖,每條邊有長度。求最小生成樹總權重。多測試案例,n=0 結束。 Prim 算法(鄰接矩陣) 適合稠密圖,O(n2)
Codeforces 259B Little Pony and Sort by Shift:循環移位排序
題目大意 給定長度 n(≤ 105)的整數序列,允許操作:將最後一個元素移到最前面(右循環移位 1 位)。求最少操作次數使序列非遞減,不可能則輸出 −1。 關
Codeforces 276E:樹上操作與樹狀數組維護
問題描述 給定一棵以 1 為根的樹,根的每個孩子形成一條單鏈(即樹退化為「星形+鏈」)。兩種操作: 0 v x d:距離節點 v 為 d 的所有節點權值 +x
HDOJ 5411 CRB and Puzzle:矩陣快速冪計數拼圖模式
問題建模 有 N 種拼圖塊,第 i 種右側可接的塊集合給定。求長度 ≤ M(≤ 105)的不同拼接模式數,模 2015。空序列也算一種。 矩陣模型 狀態向量
HDU 1061 Rightmost Digit:求 nn 末位數字
題目大意 給定整數 n(n ≤ 109),求 nn 的個位數字。多組測試,直到 EOF。 數學規律 個位數字只取決於 n 的個位數 d = n mod 10,
ZOJ 2314 Reactor Cooling:有上下界的網絡最大流
問題模型 給定有向圖,每條邊有流量下界 low 和上界 up。求是否存在可行流,並輸出滿足條件的具體流量分配。 標準轉化:上下界可行流 → 普通最大流 對每
POJ 1364 King:差分約束系統與負環判斷
問題重述 給定長度為 n(≤ 100)的整數序列 S,以及 m(≤ 100)條子序列和約束: S[si] + … + S[si+ni] < ki 或 &g
HDU 1166 敵兵布陣:線段樹實現區間求和與單點更新
問題描述 有 N(≤ 50,000)個營地排成一線,每個營地初始人數已知。需處理最多 40,000 條指令: Add i j:第 i 個營地增加 j 人。 S
POJ 3237 Tree:鏈切樹處理邊權翻轉與路徑最大值查詢
問題背景 給定一棵擁有 N 個節點的樹,節點編號為 1 至 N,邊編號為 1 至 N−1,每條邊帶有權重。需支援以下三種操作: CHANGE i v:將第 i
POJ 1661 Help Jimmy:二維 DP 求最早落地時間
題目大意 N 個水平平台,每個有左/右端點 l, r 和高度 h。 Jimmy 從 (x, y) 落下,下落/水平速度 1m/s,最大落差 max。 求到達地
HDU 4407 Sum:容斥原理 + 離線修改處理
題目大意 維護一個初始為 1..n 的數列 A,支持兩種操作(共 M ≤ 1000 次): 查詢區間 [a, b] 中與給定整數 p 互質的元素之和。 單點修
HDU 題目:動態最小生成樹邊權修改查詢
問題描述 給定一張無向圖,包含 N 個點、M 條邊。有 K 條特殊邊,其權值會被放大。每給出一條特殊邊,需求出當前圖的最小生成樹(MST)權值。最終輸出這 K