HDU 多校 Warm up 2 - 二分圖最大匹配求多米諾骨牌最大非重疊集
題目大意 平面上放置 n 個橫向 1×2 骨牌和 m 個縱向 1×2 骨牌(座標給出左上/左下格子)。同方向骨牌不重疊,異方向可能重疊。移除一些骨牌使剩餘骨牌兩
HDU 1241 Oil Deposits - DFS 連通分量計數
題目大意 m×n 網格(m,n≤100),@ 代表油 pocket,* 代表無油。八個方向(含對角線)相連的 @ 屬同一油田。求油田個數。 解法:DFS Fl
HDU 1240 Asteroids! - 三維 BFS 最短路徑
題目大意 N×N×N 立方體空間(N≤10),O 為空地,X 為小行星。給定起點和終點座標,求最少步數(六個方向移動),無路徑輸出 NO ROUTE。多測試用例
構建霍夫曼樹 - 完整 C 實現與遍歷演示
霍夫曼樹構建算法 將每個權值作為葉子節點,放入最小堆(或有序鏈表)。 重複:取出權值最小的兩棵樹,合併為新樹(權值 = 兩者之和),放回堆中。 直到堆中只剩一
VC 多字節環境下 CString 轉 char* 方法詳解
背景 在 Visual C++ 多字節(ANSI)項目中,`CString` 內部儲存為 `char*`,但直接轉換需注意緩衝區管理。 標準轉換代碼 CStr
HDU 1059 / POJ 1014 Dividing - 多重背包判斷能否平分
題目大意 有 6 種價值 1..6 的玻璃球,給定每種數量。判斷能否分成兩堆價值相等。總球數 ≤ 20,000。 解法:多重背包 + 二進制優化 總價值 su
HDU 1542 - 矩形面積並掃描線 + 離散化
題目大意 給定 n (≤100) 個矩形(邊平行坐標軸),求它們覆蓋的總面積。座標為實數。 解法:離散化 + 網格標記 收集所有 x 座標(左、右邊)和 y
HDU 2196 Computer - 樹上每個節點到最遠節點距離(三次 BFS 法)
題目大意 給定一棵帶邊權的樹(N ≤ 10,000),求每個節點到其他所有節點的最大距離 S[i]。 經典結論 樹上任意節點 x 的最遠節點必定是直徑的兩個端
HDU 4607 Park Visit - 樹直徑與查詢回答
題目大意 給定一棵 N 節點樹,邊權為 1。對於每個查詢 k:從任意節點出發,走恰好 k-1 步(可重複經過節點/邊),最多能訪問多少不同節點? 核心觀察
HDU 4608 - 暴力大數:找最小滿足條件的數
題目大意 給定一個大整數字符串(長度 ≤ 100,000),反複執行「加 1」操作,直到數字各位數字之和能被 10 整除。輸出最終結果。 解法:模擬大整數加法
POJ 2486 Apple Tree - 樹形 DP 摘蘋果最多吃幾個
題目大意 一棵以 1 為根的樹,節點 u 有 num[u] 個蘋果。從根出發,走到節點即吃光該節點蘋果。不超過 K 步(每條邊長 1,往返算 2 步),最多能吃
HDU 2768 - 最大獨立集 / 二分圖最大匹配雙解法
題目大意 有 n 個觀眾,每人給出「想留下的動物」與「想趕走的動物」。若兩觀眾的願望衝突(一人想留的動物是另一人想趕走的),則不能同時滿足。求最多能滿足多少觀眾
POJ 3318 Matrix Multiplication - 隨機化驗證矩陣乘法
題目大意 給定三個 N×N 矩陣 A、B、C (N ≤ 500),判斷 A × B = C 是否成立。直接驗證 O(N³) 會超時。 弗賴瓦爾德算法 隨機選取
POJ 2704 Pascal's Travels - 矩陣路徑計數記憶化搜索
題目大意 N×N 矩陣,每個格子有一個數字 k (0≤k≤9)。從左上角 (0,0) 出發,每步只能向右或向下移動 恰好 k 格(k 為當前格子的數字)。求到達
多校聯合練習賽 1 Problem 1005 Deque - LIS+LDS 優化求雙端隊列最長非遞減序列
題目大意 給定長度 N (≤100,000) 的序列 A,有一個雙端隊列。依次處理 A 中元素,每個元素可選:推入隊首、推入隊尾、或丟棄。隨時可從兩端彈出。要求
UVA 10487 Closest Sums - 兩數之和最接近查詢值
題目大意 給定 n (≤1000) 個整數組成的集合,以及 m (≤25) 個查詢。每個查詢給一個整數 q,要求從集合中選出兩個不同的數,使其和最接近 q。保證
SPOJ 1421 Goods - 置換循環分解與最少交換輪數
題目大意 給定一個 1..n 的排列。每一輪可以進行多次交換,但每個數字每輪最多參與一次交換。問最少需要幾輪才能將排列變為有序(1,2,…,n),並輸出具體交換