HDU 4606 Occupy Cities:計算幾何 + 最小路徑覆蓋
題目大意 二維平面 n 座城市,m 條線段障礙(不可穿越)。p 名士兵從起點出發,按固定順序佔領城市。士兵油箱容量 C,單位距離耗油 1,到達城市可補滿。求最小
HDU 2078:貪心與 DP 的對比啟示
題目大意 給定 n 個數,從中選 m 個,使選中數的「平方差之和」最大。原文鏈接已失效,但根據代碼推測:輸入 n, m 和數組,輸出最大值。 DP 解法(原作
POJ 1056 IMMEDIATE DECODABILITY:字典樹判斷前綴碼
題目大意 輸入多組編碼集合,每集合以 9 結束,整個輸入以 EOF 結束。判斷集合中是否存在某編碼是另一編碼的前綴。若無前綴關係輸出 immediately d
HDU 4629:計算幾何掃描線求三角形疊加面積
題目大意 給定 n 個三角形,求平面上被覆蓋恰好 k 次(k=1..n)的區域面積。坐標為浮點數。 掃描線核心思想 離散化 X:收集所有三角形頂點 X 坐標
HDU 1873 看病要排隊:優先隊列模擬醫院掛號
題目大意 三個科室隊列(1,2,3)。兩種操作: IN n m:病人編號遞增,優先級 m 進入第 n 隊列。 OUT n:第 n 隊列取優先級最高(m 大優先
C 與 C++ 中 bool 類型使用差異及解決方案
問題背景 C 語言(C89/C90)無原生 bool 類型;C++ 內建 bool、true、false。在 C 編譯器下直接使用 bool 會報錯。 C 語
NOI 1995 石子合併:環形區間 DP 求最小/最大得分
題目大意 環形排列 N 堆石子,每次合併相鄰兩堆,得分為新堆石子數。求合併成一堆的最小/最大總得分。N ≤ 100。 環形轉鏈:倍長數組 將環切開,複製一次形
HDU 4372 Count the Buildings:第一類 Stirling 數組合計數
題目大意 有 n 棟高度互不相同的建築排成一行。從左向右看能看到 f 棟(左高於其左所有),從右向左看能看到 b 棟。求滿足條件的排列數,模 1e9+7。n ≤
POJ 1844 Sum:數學規律求最小 N
題目大意 對 1~N 每個數賦予 + 或 - 號,使總和為給定 S (0 < S ≤ 100,000)。求最小滿足條件的 N。例:S=12 時 N=7(-1+2
C/C++ 中 string 與 char* 區別及 const_cast 用法詳解
核心區別 特性std::stringchar* 類型本質類(封裝動態字符數組)指向字符的指針(基本類型) 內存管理自動(RAII,析構釋放)手動(new/de
HDU Coins:多重背包二進制拆分優化
題目大意 n ≤ 100 種硬幣,面值 A_i、數量 C_i。目標價格 ≤ m ≤ 100,000。求能湊出的價格數(1~m)。多測試用例。 多重背包轉 01
UVA 10763 Foreign Exchange:向量配對判斷交換可行性
題目大意 n ≤ 500,000 名交換生,每人給出原籍 A 和目標 B(A≠B)。若存在完美配對:每個 A→B 都有對應的 B→A,輸出 YES,否則 NO。
UVA 11367 Full Tank?:狀態擴展 BFS 求最小加油成本
題目大意 n 城市,m 條無向路,油箱容量 C,單位距離耗油 1。城市 i 油價 price[i]。每次查詢給定 C, S, E,求從 S 到 E 最小花費,或
CF 295A Greg and Array:差分數組雙重應用
題目大意 數組 a[1..n],m 個操作 op[i] = (l_i, r_i, d_i) 表示區間加 d_i。k 個查詢 q[j] = (x_j, y_j)
POJ 1260 Pearls:斜率優化 DP 詳解
題目大意 有 n ≤ 100 顆珍珠,第 i 顆數量 a_i、單價 p_i。需分組購買,每組在原價基礎上 +10 顆珍珠成本。分組必須連續,求最小總花費。 DP
設計模式詳解:簡單工廠、工廠方法、抽象工廠、模板方法
概述 創建型模式處理對象實例化過程,封裝變化,降低耦合。本文以「披薩店」為例,層層遞進講解四大模式。 1. 簡單工廠 定義:一個工廠類根據傳入類型參數創建不同
POJ 2155 Matrix:二維線段樹維護區間異或翻轉
題目大意 N×N 矩陣初始全 0。兩種操作: C x1 y1 x2 y2:以 (x1,y1) 為左上、(x2,y2) 為右下的子矩陣每個元素翻轉(0↔1)。