BNU 2015 訓練題解:UVA 12435/12439/12442 三題詳解
UVA 12435 Consistent Verdicts 題意:給定平面上 n 個人座標,每人開一槍,求所有人聽到槍聲次數的可能不同值個數。 解法:O(n^2
POJ 2417 / BZOJ 3239 Discrete Logging:BSGS 算法求離散對數
問題描述 給定質數 P (2 ≤ P < 2^31),基數 B (2 ≤ B < P),目標 N (1 ≤ N < P),求最小非負整數 L 使得 B^L ≡
C++ 對象模型深度解析:佈局成本、虛函數表與繼承
從 C 到 C++:封裝的代價 C 語言中數據與操作分離;C++ 引入類,將數據與成員函數封裝。關鍵問題:封裝是否增加對象佈局成本? 非靜態數據成員:直接內含
HDU 4283 You Are the One:區間 DP 最小化總不滿意度
問題描述 n 人排隊上台表演,每人有一「屌絲值」 p_i。第 i 個上台者的不滿意度為 (i-1) * p_i。有一「黑屋子」(棧),每次可選隊首者直接上台,或
HDOJ 4276 The Ghost Blows Light:SPFA + 樹形 DP 最大寶物收集
問題描述 墓室為一棵樹(N ≤ 100),節點 1 為入口,節點 N 為出口。每條邊有通行時間,每個房間有寶物價值。限時 T 分鐘內從 1 走到 N,並可繞路收
HDOJ 1237 簡單計算器:堆疊實現四則運算表達式求值
問題描述 讀取只包含 +, -, *, / 的非負整數算術表達式(整數與運算符以空格分隔),計算其值,結果保留小數點後兩位。輸入以單獨一行 0 結束。 堆疊解
HDU 4737 A Bit Fun:線段樹統計區間 OR 值小於 m 的對數
問題描述 給定長度 n 的數列,詢問有多少對區間 [i, j] 使得該區間所有數的按位 OR 值嚴格小於 m。n ≤ 100,000。 核心觀察 OR 操作
LeetCode 174 Dungeon Game:動態規劃求騎士最小初始血量
問題描述 M×N 地下城,騎士從左上角 (0,0) 出發,只能向右或向下移動,目標到達右下角 (M-1,N-1) 救公主。每個格子有數值:負數扣血,正數加血,0
HDU 2665 Kth Number:主席樹 (持久化線段樹) 模板詳解
問題描述 給定長度 N 的數列,回答 Q 個查詢:區間 [l, r] 中第 k 小的數是多少?N, Q 可達 10^5,需離線或線上高效解決。 核心思想:主席
HDU 2717 Catch That Cow:BFS 最短路徑抓牛問題
問題描述 農夫 John 從數線上的位置 N (0 ≤ N ≤ 100,000) 出發,追捕停留在 K (0 ≤ K ≤ 100,000) 的牛。John 有兩
HDU 3047 ZJNU Stadium:並查集與距離追蹤解決座位衝突問題
問題背景 在 2007 年浙江大學生運動會中,浙江師範大學新建了一座現代化體育場,觀眾席呈圓形排列,共 300 列(順時針編號 1–300),行數視為無限。現在
C++ 三種繼承方式深度解析:公有、私有、保護繼承
核心規則總結 繼承方式基類 public基類 protected基類 private派生類對象訪問 公有繼承publicprotected不可見僅 publi
HDU 2069 Coin Change:帶硬幣數量限制的母函數求解
問題特點 本題在普通母函數基礎上增加了「組成個數不能超過 100 個硬幣」的限制。這要求我們將一維數組擴展為二維數組 c1[結果][組成個數],並在遞推過程中增
C++ 對象模型:Default Constructor 建構操作詳解 (第二章)
何時合成 Default Constructor? C++ Standard:只有當編譯器**需要**時,才為無用戶聲明構造函數的類合成默認構造函數。合成構造函
HDU 1051 Wooden Sticks:貪心分組 (排序 + 模擬)
問題描述 有 n 根木棍,每根有長度 l 和重量 w。處理規則:先選一根,之後每次可選長度 ≥ 上一根長度**且**重量 ≥ 上一根重量的木棍。求將所有木棍分成
HDU 4800 Josephina and RPG:二維 DP 最大通關概率
問題描述 有 m 個角色(實際為 C(m,3) 種三人組合),n 關卡,每關有特定 AI 對手。角色 j 擊敗 AI k 的勝率為 rate[j][k]。通關後