LightOJ 1007:歐拉函數平方和前綴和
題目大意 定義 score(x) = φ(x)^2,其中 φ(x) 為歐拉函數(與 x 互質且小於 x 的正整數個數)。給多組查詢 [a, b],求區間內 sc
UVA 580 Critical Mass:遞推關係與矩陣快速冪
題目背景 1) 取放條件是第 x-1 個環已套上且前 x-2 個環全未套。求將 n 個環全取下的最少操作次數。 遞推推導 設 f(n) 為取下前 n 個環的最
LeetCode 86 Partition List:鏈表分區保持相對順序
題目 給定鏈表頭節點 head 和值 x,將鏈表重排使所有小於 x 的節點排在大於或等於 x 的節點之前,且保持兩部分內部原有相對順序。例如:1→4→3→2→5
POJ 1050 To the MAX:二維最大子矩陣和
題意 給定 N×N 矩陣 (N ≤ 100),找出一個子矩陣使其元素和最大。 思路 將二維問題降維為一維。枚舉上邊界 top 和下邊界 bottom,將這兩行
HDU 5256 序列變換:LIS 變形求最少修改次數
題目大意 給定長度為 N 的正整數序列,允許修改任意元素為任意整數,求使序列變為嚴格遞增的最少修改次數。多組測試數據,N ≤ 10^5,元素值 ≤ 10^6。
LeetCode Contains Duplicate III:排序 + 二分查找解法
題目 給定整數陣列 nums,判斷是否存在兩個不同索引 i 和 j,使得 abs(nums[i] - nums[j]) <= t 且 abs(i - j)
LeetCode Permutation Sequence:第 k 個排列的數學解法
題目描述 給定整數 n 和 k,集合 [1, 2, 3, ..., n] 共有 n! 種唯一排列。若將所有排列按字典序列出並標記,例如 n = 3 時序列為:「
Codeforces Round #306 Div.2 A: Two Substrings — 判斷不重疊 AB 與 BA
問題描述 給定字符串 s (|s| ≤ 10⁵),判斷是否存在不重疊的子串 AB 和 BA(順序任意)。輸出 YES 或 NO。 關鍵點:不重疊 ABA 中雖
HDU 折線分割平面:推導遞推公式 O(1) 計算最大分割數
問題描述 n 條折線(每條折線由兩條射線組成,形成一個「V」形)分割平面,求最大分割區域數。 n ≤ 10,000,多測試用例。 規律探索與公式推導 設 f(
HDU 1051 Wooden Sticks:貪心 + 多重集模擬求最少設置時間
問題描述 有 n (≤ 5000) 根木棍,每根有長度 l 和重量 w。機器處理第一根需 1 分鐘設置。若上一根棍子 (l, w) 滿足 l ≤ l 且 w ≤
C++ String 類手寫實現:引用計數 + COW (Copy-On-Write) 優化
設計目標 實現一個簡易 String 類,支持: 構造/拷貝/賦值/析構 += 拼接 ==/!= 比較 流輸入輸出 /< 引用計數 + 寫時複製 (COW):
C++ 求最大子數組和:暴力 O(n³) 與 Kadane 算法 O(n) 對比
問題描述 給定整數數組(含正負),找出連續子數組的最大和。例如 {2,3,4,5,6,7,8,-22,1} 最大子數組和為 35(前 7 個元素)。 方法一:
HDU 1050 Moving Tables:走廊區間重疊計數求最小搬運時間
問題描述 走廊兩側各 200 個房間(北側奇數 1,3,...,399;南側偶數 2,4,...,400),房間對面相對。搬運一張桌子從房間 s 到 t 需 1
HDU 5265 Pog Loves Szh II:排序+雙指針求模最大值
問題描述 給定 m 個整數和模數 p,從中選兩個數 a, b(可相同),使 (a + b) mod p 最大。m ≤ 100,000,多測試用例。 核心觀察
BZOJ 2648 SJY擺棋子:KD-Tree 動態維護平面點集最近曼哈頓距離
問題描述 平面上初始有 N (≤ 500,000) 個黑棋子。M (≤ 500,000) 次操作: 1 x y:添加黑棋子; 2 x y:添加白棋子,詢問該白棋
設計模式筆記:從簡單工廠到工廠方法模式的演進
簡單工廠模式:起步與局限 核心思想:一個工廠類根據參數決定創建哪種產品對象,將對象創建邏輯封裝,客戶端無需知道具體類名。 class AnimalFactory
POJ 3691 DNA Repair:AC 自動機 + DP 求最少修改字符
問題描述 給定 N (≤ 50) 個致病 DNA 片段(模式串,長度 ≤ 20,字符集 {A,G,C,T})和一條待修復 DNA 主串(長度 ≤ 1000)。允
LeetCode 107: 二叉樹自底向上的層序遍歷
問題描述 給定一棵二叉樹,返回其節點值的自底向上層序遍歷。(即從葉子層開始,逐層向上到根節點,每層內從左到右。) 例如: 輸入:{3,9,20,#,#,15,7