HDU 2159 FATE — 二維完全背包問題解析
問題背景 給定忍耐度 m、需殺怪獸數 s、目標經驗值 n,以及 k 種怪獸,每種有經驗值 a[i] 和消耗忍耐度 b[i]。怪獸可重複擊殺(完全背包)。求在忍耐
HDU 1565 方格取數(1) — 狀態壓縮 DP 入門經典題解
問題描述 給定一個 n × n 的棋盤(n ≤ 20),每個格子內有一個非負整數。需要從中選取若干個數,使得任意兩個被選中的數所在的格子沒有公共邊(即不能相鄰)
HDU 1257 最少導彈攔截系統:LIS 與貪心雙重應用
題目大意 給定導彈高度序列,攔截系統規則:每套系統發射的導彈高度**嚴格遞減**。求: 1. 最多能攔截多少枚導彈(最長遞減子序列長度)。 2. 最少需要多少套
UVA 11375 Matches:高精度遞推計算火柴組成數字數量
題目大意 每根火柴可組成數字 0-9,消耗火柴數分別為 {6,2,5,5,4,5,6,3,7,6}。給定 n (≤ 2000) 根火柴,求能組成多少個**不以
動態規劃解迷宮:百度之星 1004 Labyrinth
題目大意 m×n 迷宮(m,n ≤ 100),從左上角 (1,1) 走到右上角 (1,n)。每步只能上、下、右移動,**不能重複訪問格子**。每格有金幣(正/負
Splay 專題復習:BZOJ 3224/1862/1503 題解與代碼
BZOJ 3224 普通平衡樹 **操作**:插入、刪除(單個)、查詢排名、查詢第 k 數、前驅、後繼。 **Splay 維護**:每節點存 son[2]、si
C++ 對象模型深度解析:數據成員與成員函數佈局
數據成員佈局 static 數據成員 **不存儲在對象中**,位於全局數據段(data segment),全程只有一份副本。 編譯器通過 **name
HDU 2955 Robberies:01 背包變體——概率約束下的最大搶劫金額
題目大意 Roy 搶劫銀行,每家銀行有金額 m_i 和被抓概率 p_i。Roy 要求總被抓概率不超過 P。求最大可搶劫金額。銀行數 n ≤ 100,金額 m_i
C++ 獲取完整類型名稱:模板元編程實現 check_type
痛點 typeid(T).name() 返回編譯器相關的 mangled 名稱(MSVC 可讀,GCC 為 i, PKc 等),且會丟棄 const/volat
HDU 4811 Ball:貪心推導最大得分
題目大意 有三種球,數量分別為 a, b, c。排成一行,得分規則:每個球得分等於其左右相鄰**不同類型**球的數量(即左右兩側各計算一次,同類不計)。求最大總
HDU Minimum Transport Cost:最短路徑字典序最小輸出
題目大意 給定有向圖,邊權為正,每個節點有稅費。求從 u 到 v 的最小總費用(路徑邊權和 + 途經節點稅費和,不含起終點稅費)。若多條最短路徑,輸出**字典序
HDU 4803 Poor Warehouse Keeper:貪心構造最大滿足條件數量
題目大意 給定 x, y,初始值 s = 1。每次操作可將 s 增加任意正整數,但要求增加後的值 s 滿足 s * x ≤ y + 1(近似)。目標是最大化操作
C++ Primer 學習筆記:文本查詢系統引言
文本查詢系統設計概覽 本系列筆記將實現一個支持布爾邏輯查詢的文本檢索系統,展示 C++ 面向對象設計的核心技術: 類層次體系與虛函數多態(Query_ba
CareerCup 1.8 字符串旋轉判斷:只調用一次 isSubstring
題目 給定 isSubstring(s1, s2) 判斷 s2 是否為 s1 的子串。請僅調用一次 isSubstring 判斷 s2 是否為 s1 的旋轉字符
LeetCode 3Sum:雙指針 O(n²) 求三數之和為零
題目大意 給定整數數組 nums,找出所有 **不重複** 三元組 [a, b, c] 使得 a + b + c = 0。三元組內按非遞減序排列,解集不含重複三
C++ Primer 學習筆記:文本查詢系統完整實現(含習題)
項目結構 實現一個支持邏輯查詢(AND、OR、NOT)的文本檢索系統,核心類: TextQuery:讀取文件,建立單詞 → 行號集合 映射。 Quer