NYOJ 93 漢諾塔(三)——模擬合法性判定,棧模擬移動過程
問題描述 經典漢諾塔:3 桿,m 個盤子(1..m 從小到大),初始全在桿 1。給 n 步移動操作 `a b`(從桿 a 移到桿 b)。判定操作序列是否合法:不
UVA 1526 Edge Detection——RLE 圖像邊緣檢測,二分查找 + 邊界點處理
問題描述 寬度 `W` 的圖像,以 RLE(游程編碼)給出:`(value, run_length)` 對。轉換規則:輸出像素 = 原像素與其 8 鄰域像素差值
PAT 1025 反轉鏈表——數組模擬鏈表 O(n) 原地分組反轉
問題描述 給定單鏈表頭地址、節點數 n、反轉區間長度 K。每 K 個節點為一組反轉順序,不足 K 的尾部保持原序。輸出反轉後的鏈表(地址 5 位數字,含前導零)
HDU 1370 Biorhythms——中國剩餘定理 / 直接枚舉求三周期同步
問題描述 三個生理週期:體力 23 天、情緒 28 天、智力 33 天。給定三個週期的高峰日 `p, e, i`(相對某基準日)和當前日 `d`。求從 `d`
HDU 2079 選課時間——普通母函數求組合數
問題描述 有 k 種學分的課程,第 i 種學分為 `a[i]`,有 `b[i]` 門可選。選課總學分恰為 n,求選法數。課程同學分視為無區別。n ≤ 40, k
HDU 1518 棍子拼正方形——DFS 深度優先搜索 + 剪枝
問題描述 給 n 根棍子(n ≤ 20),長度為正整數。能否用所有棍子拼成一個正方形(四邊長度相等)?每根棍子必須用完整,不能折斷。 核心思路:DFS 填邊
ZOJ 1484 Minimum Inversion Number——歸並排序求逆序數 + 循環移動公式 O(n log n)
問題描述 給定 0~n-1 的一個排列(n ≤ 5000)。定義逆序對數為 `ia[j]` 的對數。考慮將前 m 個元素移到末尾(m=0..n-1)得到 n 個
ZOJ 1953 Advanced Fruits——LCS 構造最短公共超序列
問題描述 給兩個字符串 f1, f2(長度 ≤ 100),求最短字符串 S,使得 f1 和 f2 都是 S 的子序列(不要求連續)。輸出任意一個最短超序列。
C/C++ 混合編程:extern "C" 完整使用指南與避坑
為什麼需要 extern C C++ 支持函數重載,編譯器對函數名進行 Name Mangling(名字修飾),生成包含參數類型信息的符號(如 `_Z3fooi
HDU 3535 分組背包 + 混合背包——三類物品策略統一 DP 框架
問題描述 n 組物品,背包容量 V。每組有一類型: 類型 0:至少選一個(多選無限,完全背包) 類型 1:至多選一個(01 背包) 類型 2:任意選擇(完全背
POJ 1496 Word Index——組合數計數求字典序排名
問題描述 合法單詞:長度 1~5,由小寫字母組成,字母嚴格遞增(如 `abc`, `gwz` 合法;`aab`, `cat` 非法)。所有合法單詞按字典序排列編
HDU 2571 命運——網格 DP 三種移動轉移求最大幸運值
問題描述 n 行 m 列網格(n≤50, m≤1000),每格有幸運值(可負)。從 (1,1) 走到 (n,m),三種移動:右、下、同行跳躍(從 (i,k) 跳
HDOJ 2458 Kindergarten——二分圖最大獨立集 = 總點數 - 最大匹配
問題描述 幼兒園有 G 個女生、B 個男生。同性互相認識,部分雄雌認識(M 對)。求最大孩子集合,使集合內任意兩人互相認識。G,B ≤ 200, M ≤ G×B
C++ 引用 & 指針作函數參數的本質區別與陷阱
引用基本規則 聲明時必須初始化,綁定後不可改變綁定對象。 不存在空引用,必須綁定合法對象。 無多級引用(`int&&` 非引用的引用,C++11 起為右值引用
HDU 1422 重溫世界杯——環狀數組最大前綴和 DP 解法
問題描述 n 座城市環狀排列,第 i 城市給生活費 `w[i]`,花費 `l[i]`。xhd 從某城市出發,按環順序參觀,錢包餘額不能為負。求最多能參觀多少城市
LeetCode Two Sum——排序雙指針 O(n log n) 替代方案
題目同 211167 另一解法:排序 + 雙指針 若不允許額外空間,或面試官要求不改動原數組(可複製),可用排序雙指針: 將 `(value, origin
LeetCode Two Sum——哈希表單次遍歷 O(n) 求和索引
題目描述 給定整數數組 `nums` 和目標值 `target`,找出兩個數使其和為 `target`,返回它們的1-based 索引(index1 < ind
POJ 3140 樹形 DP——剪斷一條邊使兩棵子樹權值和差值最小
問題描述 給定一棵 n 節點的樹,每個節點有正權值。剪斷一條邊,分成兩棵子樹。求兩棵子樹權值和之差的絕對值的最小值。 約束:n ≤ 10⁵, 權值 ≤ 10⁹,