POJ 3080:Blue Jeans——最長公共子串二分 + Hash/RK
題目描述 m 條 DNA 序列(m ≤ 10,長 ≤ 60),找最長公共子串(至少長度 1)。輸出字典序最小者,無則輸出 no significant comm
C/C++ 數組下標可以為負值——指針算術演示
現象說明 C/C++ 允許指針指向數組中間,然後使用負下標訪問前面的元素。關鍵在於指針運算:p[-k] == *(p - k)。 代碼示例 #include
POJ 3463:Sightseeing——次短路 Dijkstra 變體
題目描述 有向圖,求從 S 到 T 的最短路和嚴格次短路條數。N ≤ 1000, M ≤ 10000。 狀態擴展 Dijkstra 每個節點維護兩個距離:di
HDOJ 1076:An Easy Task——求第 N 個閏年
題目描述 給定起始年份 Y 和 N,輸出從 Y 開始(含 Y)的第 N 個閏年。 閏年判定 bool leap(int y) { return (y%
Codeforces 509B:Painting Pebbles——貪心構造著色方案
題目描述 n 堆鵝卵石,第 i 堆有 aᵢ 顆。用 k 種顏色著色,要求任意兩堆同色石子數差 ≤ 1。判斷是否可行並輸出方案。 可行條件 令 mx = max
HDU 2007 熱身賽:How many prime numbers——質數判定
題目描述 多組測試,每組給 N 個整數(≥2,≤ 2³¹-1),統計質數個數。 判定算法:試除法優化 只需試除到 √n 2 特判,之後只試奇數 更優:預篩小
HDU 5168:Legal path——邊權差約束最短路
題目描述 有向圖 n≤1e5, m≤2e5,邊權 z≤1e9。合法路徑:相鄰邊權差 ≥ K。求 1→n 最短合法路徑長度(邊權和)。 核心思想:按邊權排序 +
HDU 5167:Fibonacci——記憶化搜索判斷乘積分解
題目描述 判斷給定 n (≤ 1e9) 是否可表示為若干斐波那契數(F₁=1,F₂=1,F₃=2...)的乘積。多測試用例。 觀察 1e9 以內斐波那契數僅
BZOJ 1856:SCOI2010 字符串——卡特蘭數組合計數
題目描述 n 個 1 和 m 個 0 排列,任意前綴 1 的個數 ≥ 0 的個數。求方案數模 20100403。 卡特蘭數推廣 經典卡特蘭數 C(n,n) =
BZOJ 1269:文本編輯器——Splay 树实现序列操作
題目描述 實現文本編輯器核心操作:移動光標、插入、刪除、反轉區間、查詢字符。操作數 ≤ 10⁵,總長度 ≤ 2×10⁶。 Splay 树維護序列 每個節點存
BZOJ 3585:mex——莫隊算法 + 分塊優化
題目描述 數組長度 n,m 次查詢區間 mex(最小非負整數缺失值)。n,m ≤ 200,000。 莫隊算法 + 值域分塊 0 的值個數」 莫隊排序查詢,
BZOJ 1443:JSOI2009 Game——二分圖博弈與最大匹配
題目描述 m×n 棋盤,部分格子有障礙。先手放棋子,雙手輪流移動到相鄰無障礙未訪問格子,無法移動者負。判斷先手必勝策略及所有必勝起始位置。 二分圖博弈模型 棋
LeetCode 99:恢復二叉搜索樹——中序遍歷找錯誤節點
題目描述 BST 中兩個節點被錯誤交換,恢復樹結構不變,僅交換節點值。要求 O(1) 空間(Morris 遍歷)或 O(n) 空間均可。 中序遍歷性質 BST
POJ 2231:Moo Volume——貪心計算距離和
題目描述 N 條牛位於數軸上,求所有牛對之間距離之和。N ≤ 10000。 貪心 / 前綴和推導 排序位置 x₁ ≤ x₂ ≤ ... ≤ xₙ。總和 = Σ
BZOJ 2079:Poi2010 Guilds——並查集判斷二分圖可行性
題目描述 無向圖,需紅黑染色使每個節點及其鄰居至少有一紅一黑。判斷是否可行。 關鍵結論 連通塊大小 ≥ 2 總可構造:任取生成樹,按層次二分染色(深度奇偶)。
LeetCode 88:合併兩個有序數組——逆向雙指針
題目描述 有序數組 A(長度 m)有足夠空間容納 B(長度 n),將 B 合併到 A 中保持有序。 逆向雙指針法 從尾部開始比較,大的放在 A 的末尾,避免覆
BZOJ 3450:Tyvj1952 Easy——期望 DP 計算 OX 序列得分
題目描述 長度 n 的序列,字符為 o、x、?。連續 k 個 o 得分 k²。? 等概率為 o 或 x。求期望總得分。 DP 狀態定義 L[i]:第 i 位