POJ 1659 Frogs' Neighborhood:度序列還原無向圖(Havel-Hakimi 算法)
問題 給定 n(<10)個點的度數 x1..xn,構造一個無向簡圖的鄰接矩陣使得每點度數匹配,或判斷無解。多測試用例。 Havel-Hakimi 算法 將度
HDU 4405 Aeroplane Chess:概率 DP 期望步數
問題 0 到 n 共 n+1 格。從 0 開始,擲骰子(1~6 均勻)前進。格子間有傳送門(單向 a→b),落在 a 直接傳送到 b 不消耗骰子。求到達 n 的
POJ 1258 Agri-Net:Prim 算法求最小生成樹
問題 n 個農場(n≤100),給定 n×n 距離矩陣(對角線為 0,對稱)。求連通所有農場的最小光纖總長度(即 MST 權值和)。 Prim 算法 維護集合
POJ 2774 Long Long Message:後綴數組求最長公共子串
問題 給定兩個長度 ≤ 100000 的小寫字母字符串,求最長公共子串長度。 後綴數組方法 將兩串連接:S = A + { + B({ ASCII 碼大於
ZOJ 3527 Shinryaku! Kero Musume:環上樹形 DP
問題建模 N 個村莊(N≤1e5),每村可建神社得 F[i] 信仰值。每村有一有向邊指向 P[i](不指向自己)。若村 i 和 P[i] 都建神社,i 的信仰值
POJ 3034 Whac-a-Mole:時空 DP 優化錘子移動
問題 n×n 格子,地鼠在時刻 t 出現於 (x,y) 持續 1 單位時間。錘子每時刻最多移動曼哈頓距離 d(實為切比雪夫距離?原題為歐氏距離 ≤ d)。初始位
HDU 1069 Monkey and Banana:盒子疊放最大高度 DP
問題 n 類長方體(n≤30),每類無限供應,三維 (x,y,z) 任意面可作底。上層底面長寬嚴格小於下層對應邊。求最大疊放高度。 轉化為最長遞減子序列變種
數位 DP 入門:hihoCoder 1033 交錯和
問題 求區間 [l, r] 內所有數字,其各位數字從高到低交替加減(最高位加)後的和等於 k 的數字之和(模 1e9+7)。 狀態定義 dfs(pos, su
Codeforces 240F TorCoder:線段樹維護字母統計與回文構造
問題描述 字符串 s(長度 n ≤ 1e5),m 次查詢(m ≤ 1e5)。每次查詢給定區間 [l, r],需將該區間字符重新排列成字典序最小的回文串(若無法構
HDU 4135 Co-prime:容斥原理計算區間內互質數個數
問題 給定 n、區間 [a, b],求區間內與 n 互質的整數個數。多測試用例。 容斥原理轉化 設 n 的不同質因子為 p1..pk。區間 [1, r] 中與
尋找多數元素:Boyer-Moore 投票算法 O(1) 空間
問題 n/2 的元素(保證存在)。要求 O(n) 時間、O(1) 額外空間。 算法核心 「同時刪除兩個不同的數,多數元素不變」。維護候選者 ret 和計數器
HDU 4149 Magic Potion:位運算逐位推導異或鍵值
問題描述 已知 x1..x8 與未知 m 異或後的結果 r1..r8,以及 (x1+...+x8) ⊕ m = sum。求 m(32 位整數)。 逐位推導原理
LeetCode 9 回文數:不使用額外空間的數學解法
問題 判斷整數 x 是否為回文數。負數非回文。要求不使用額外空間(不能轉字符串)。 數學思路 對比最高位與最低位。先計算總位數 curMod,最高位除數 le
HDU 1086 線段相交判斷:向量叉積與矩形快速排斥
問題描述 2 條線段交於同一點,重複計算)。假設任意兩線段最多一個交點。多測試用例,N=0 結束。 幾何判斷原理 兩線段 (A,B) 和 (C,D) 相交的充
UVA 673 括號匹配:棧判斷合法性
問題描述 輸入 n 行字符串(長度 ≤ 128),僅含 (, ), [, ]。判斷每行是否為合法括號序列:空串合法;A、B 合法則 AB 合法;A 合法則 (A
動態規劃經典:修長城問題(區間 DP + 未來代價優化)
問題背景 長城上有 n 個損壞點,位置 x[i],修復費用 c[i],每單位時間未修復損失 d[i]。修復隊從位置 x 出發,速度 v,修復時間忽略。求最小總代
POJ 3249 Test for Job:有向無環圖上最大路徑和(記憶化 DFS)
問題描述 有向圖 n 點 m 條邊(n ≤ 100000, m ≤ 1000000),每點有權值 V[i](可正可負)。入度為 0 為源點,出度為 0 為匯點。