順序環形隊列 C 語言完整實現:初始化、入隊、出隊、銷毀
數據結構定義 #define MaxSize 50 typedef char ElemType; typedef struct { ElemType d
ZOJ 1654:Place the Robots — 二分圖最大匹配的巧妙建圖
題目轉化 m×n 地圖:# 牆、* 草、o 空地。機器人只能放空地,向四方向發射激光(穿草不穿牆)。任兩機器人不可同行/同列且中間無牆。求最大放置數。 建圖核
CF 242E:XOR on Segment — 線段樹維護位計數 + 延遲標記
題目操作 查詢區間 [l, r] 元素和。 區間 [l, r] 每個元素異或值 x。 核心洞察 異或按位獨立。對每個二進制位(0~19),維護區間內該位為
HDU 2844:Coins — 多重背包計算可達成和的種數
題目大意 有 n 種硬幣,第 i 種面值 v[i]、數量 amount[i]。從中任取若干枚(可不取),求能湊出的不同總面值的種數(不超過給定上限 V)。 多
POJ 2251:Dungeon Master — 3D 迷宮 BFS 最短路徑
題目大意 L 層、R 行、C 列的 3D 迷宮。S 起點,E 終點,# 牆,. 空地。六個方向移動(上下左右前後),每步 1 分鐘。求最短逃脫時間,或輸出 Tr
HDU 4279:數論分析 — f(x) 與 F(x) 的奇偶性規律
題目定義 f(x):≤x 的正整數中,不整除 x 但與 x 有大於 1 的公約數的數的個數。 F(x):≤x 的正整數中,f(y) 為奇數的 y 的個數。求
URAL 1019:Line Painting — 區間離散化 + 掃描線求最長白段
題目大意 數軸 [0, 1e9] 初始全白。n 次操作:將區間 [l, r) 染黑或染白。求最終最長連續白段的左右端點(開區間)。 離散化 + 差分思想 收
組合數快速遞推:C(n,k+1) = C(n,k)·(n-k)/(k+1) 大整數實現
核心遞推公式 C(n, k+1) = C(n, k) * (n - k) / (k + 1) 從 C(n,0)=1 開始迭代,可在 O(n) 時間內求出第 n
HDU 4632:Palindrome subsequence — 區間 DP 計數回文子序列
題目大意 給定長度 ≤1000 的小寫字母串 S,求有多少個不同的回文子序列(位置不同視為不同,即使字符相同)。答案模 10007。 區間 DP 定義 dp
CF 319B:Psychos in a Line — 單調棧 DP 解析
題目轉化 n 個精神病人排成一排,編號 1~n 互不相同。每秒同時發生:若某人右鄰居編號比自己小,則殺死右鄰居。求過程穩定(無人再被殺)所需秒數。 關鍵觀察
UVA 705:Slash Maze — 兩種找迷宮環算法對比
題目大意 W×H 迷宮,每格為 / 或 \。激光沿格子邊傳播,遇斜線反射。路徑不分叉,只形成環或連通邊界的開放路徑。求環的個數與最長環長度(長度 = 經過的小正
HDU 1392:凸包周長 — Graham Scan 模板詳解
問題描述 給定平面上 N 個點(N≤100),求其凸包周長。特殊情況:1 點周長 0,2 點周長為兩點距離×2(來回)。 Graham Scan 步驟 找最
HDU 2517:棋盤分割 — 區間 DP 最小化均方差
題目轉化 8×8 棋盤,每格有權值。用 n 刀(橫/豎)切成 n+1 塊,使各塊權值和的均方差最小。輸出最小均方差(保留三位小數)。 數學化簡 均方差 σ²
C++ 高精度隨機數生成:解決 srand(time(0)) 重複種子問題
問題現象 在循環中快速調用 srand(time(0)); rand() 時,time(0) 秒級精度導致種子相同,產生完全一樣的「隨機」序列。 解決方案:納
HDU 3849:雙連通分量求橋 — Tarjan 算法模板
題目轉化 給定無向圖(節點為字符串名稱),找出所有「橋」(割邊):刪除後圖不再連通的邊。輸出橋的數量及兩端點名稱(按字典序)。 Tarjan 核心思想 df
拓撲排序完全指南:從偏序到全序,DFS 與 BFS 雙實現
基本概念 偏序:集合中部分元素可比較(自反、反對稱、傳遞)。 全序:任意兩元素均可比較。 拓撲序列:將有向無環圖 (DAG) 的頂點排成線性序列,使所有邊從左
C++ 命名空間巢狀作用域解析:從 ::ant::detail::i 談起
核心規則總結 ::ant 表示全局(根)命名空間或匿名命名空間。 同名實體在多層命名空間同時存在時,就近原則:在 ::ant::detail 內無限定使用 i