C++ 字符串與數值互轉:stringstream 最佳實踐
C 標準庫函數(僅字符串→數值) 函數功能 atoi/atol/atoll字符串→ int/long/long long strtol/strtoul/str
HDU 3461 Code Lock:並查集 + 快速冪求鎖狀態數
題目大意 字母鎖有 n 位,每位可為 a~z。給定 m 個區間 [l, r],區間內字母可**同時**循環變換(如 a→b, z→a)。若兩把鎖經有限次操作可變
NYoj 980 格子刷油漆:2×N 棋盤漫遊路徑計數
問題轉化 2×N 格子棋盤,從任意角出發,走遍所有格子恰好一次(哈密頓路徑),求路徑總數模 1,000,000,007。 遞推關係 定義兩個數列: D[n]
《編程之美》:1 到 N 中數字 1 出現的次數及 f(N)=N 最大解
問題 1:計算 1~N 中數字 1 出現總次數 f(N) 按位分治:對每一位(個、十、百…),設 factor=10^k,將 N 分為高位 high、當前位 c
LeetCode Search a 2D Matrix:二維有序矩陣查找兩種 O(log mn) 解法
題目 m×n 上一行尾元素。判斷 target 是否存在。 解法一:二分查找(展平為一維) 索引映射:mid → matrix[mid/n][mid%n]。
全排列非遞歸實現:STL next_permutation 核心邏輯手寫版
核心思想:字典序下一個排列 從右向左找第一對 a[i] < a[i+1](即 i 為「支點」)。 a[i] 的元素 a[j]。 交換 a[i]、a[j]。
C++ 結構體實戰:統計 5 位學生最高/最低分
題目要求 輸入 5 位學生姓名與分數,輸出最高分與最低分學生的姓名及分數。輸出格式嚴格: MAX: name score MIN:name score 注意冒號
POJ 1088 滑雪:DP 記憶化搜尋最長下降路徑
題目 R,C ≤ 100 高度地圖,可從高處滑向低處相鄰格(上下左右)。求最長滑雪路徑長度(格子數)。 DP + 拓撲序 / 記憶化 DFS 定義 dp[i]
LeetCode Set Matrix Zeroes:原地矩陣置零 O(1) 空間
題目 給定 m×n 矩陣,若元素為 0,將其所在行列全置 0。要求原地修改,額外空間 O(1)。 核心思路:借用首行首列作標記 檢查首行、首列是否原本含 0
HDU 1166 敵兵布陣:樹狀數組與線段樹區間和單點修改
題目 N ≤ 50000 營地初始兵力,Q ≤ 40000 次操作:Add i v、Sub i v、Query l r、End。多測資,輸出 Case k:。經
POJ 3255 / 12222 Mountain Road:DP+貪心調度單車道雙向交通
問題建模 單車道山路,A/B 兩端各有車隊。每車含方向、到達時間、通行時間。約束: 路中不能有反向車。 同向車間隔 ≥ 10 秒;若中間穿插反向車,則不受 1
HDU 1754 I Hate It:線段樹單點更新區間最大值查詢
題目 N ≤ 200000 學生分數,Q 次操作:Q a b 查詢區間最大值,U a b 將第 a 個學生分數改為 b。多測資。 線段樹單點更新 節點存 m
LeetCode Combinations:組合生成遞歸回溯標準解法
題目 給定 n、k,返回 [1..n] 中所有大小為 k 的組合。順序不重要。 遞歸回溯 函數 backtrack(start, path):若 path.s
POJ 3264 Balanced Lineup:線段樹 RMQ 區間最大最小值差
題目 N ≤ 50000 個數,Q ≤ 200000 次詢問,每次給區間 [a,b] 求最大值與最小值之差。 線段樹節點存雙值 每個節點存 maxv、minv
NYOJ 891 找點:區間覆蓋最少點數貪心解法
題目 給定 n 個區間 [x_i, y_i],求最少選幾個點,使每個區間至少包含一個選定點。輸出最少點數。 貪心策略 按區間右端點 y_i 升序排序。 初始