HDU 5172 GTY's gay friends:線段樹優化與前綴和+離線查詢的雙重解法
題目大意 給定長度為 n 的數組,m 次查詢 [l, r],判斷該區間是否為 1..len 的全排列(len = r-l+1)。 全排列條件: 1. 區間和等於
LeetCode 75 顏色分類:荷蘭國旗問題的三種解法全解析
題目回顧 給定包含 0(紅)、1(白)、2(藍)的數組,原地排序使相同顏色相鄰,順序為 0, 1, 2。不可使用庫排序函數。 解法一:計數排序(兩遍掃描,O(
LeetCode 56 合併區間:排序 + 貪心掃描線的經典套路
題目大意 給定一組區間集合,合併所有重疊的區間。 輸入:[[1,3],[2,6],[8,10],[15,18]] 輸出:[[1,6],[8,10],[15,18
POJ 1041 John's Trip:字典序最小歐拉迴路
題目大意 無向圖,邊有編號。求從 1 號點出發的歐拉迴路(走遍每條邊恰好一次回到起點),要求邊編號序列字典序最小。輸入多組,0 0 結束。 解法:Hierho
LeetCode 70 爬樓梯:動態規劃與費波那契數列的完美邂逅
題目回顧 你正在爬一個需要 n 階才能到達頂部的樓梯。每次你可以爬 1 階或 2 階。請問有多少種不同的方法可以爬到樓頂? 核心洞察:這其實是費波那契數列 設
LeetCode 28 Implement strStr():子串查找朴素實現
題目描述 實現 strStr():返回 needle 在 haystack 中首次出現的下標,不存在返回 -1。若 needle 為空返回 0。 朴素算法 (
HDU 4406 GPA:最大費用最大流優化復習安排
題目大意 n 天、每天上 k 門課、m 門課總數。每門課有學分 w、基礎分 score。給定每天可復習的課程。GPA 計算公式: f(score, w) = w
LeetCode Surrounded Regions:邊緣 BFS 標記保留區域
題目描述 給定 m×n 矩陣 X 和 O,將所有被 X 完全包圍的 O 翻轉為 X。邊緣上的 O 及其連通區域不翻轉。 解法:反向思維 + BFS 掃描四條
C++ 復合運算與運算符重載:複數類完整示例
三種實現方式對比 成員函數:Complex add(Complex c),調用 a.add(b)。 友元函數:friend Complex add(Compl
POJ 1004 Financial Management:十二月平均餘額計算
題目大意 輸入 12 行,每行一個浮點數(銀行月結餘),求平均值,輸出格式:$xxx.xx(保留兩位小數,四捨五入)。 解法 直接累加 12 個數,除以 12
C++ std::bind 詳解與 C# 實現柯裡化對比
柯裡化核心概念 將多參數函數轉換為單參數函數鏈:f(a,b,c) → f(a)(b)(c)。C++ std::bind、bind1st、bind2nd 即實現此
HDU 4381:區間塗色背包變體 - 最大白格數與最小操作數
題目大意 1~N 共 N 個格子,初始全黑。兩類操作: 1 a x:在 [1, a] 中選 x 個黑格塗白。 2 a x:在 [a, N] 中選 x 個黑格塗
LeetCode Merge Two Sorted Lists:合併兩個有序鏈表
題目描述 合併兩個升序鏈表為一個新升序鏈表,要求通過拼接原節點實現(不創建新節點)。 解法:雙指針 + 虛擬頭節點 設置 dummy 頭節點,tail 指向
POJ 1222 EXTENDED LIGHTS OUT:高斯消元法解開關燈謎題
題目大意 5×6 矩陣按鈕,每個按鈕控制自身及上下左右鄰居(邊角少一個)的燈狀態翻轉(0↔1)。給定初始亮燈狀態,求按下哪些按鈕(每個最多按一次)可使所有燈熄滅
HDU 4085 Peach Blossom Spring:斯坦納樹 + 狀態壓縮 DP + 記憶化搜索
題目大意 n 個點、m 條可建邊(帶權)、k 個人。初始第 1..k 點各一人,目標移動到第 n-k+1..n 點(各點一人)。從給定邊中選擇構建,使總花費最小
HDU ACM 題:N^N 的個位數字 - 循環節規律
題目大意 給定 N (1 ≤ N ≤ 10⁹),求 N^N 的個位數字。多測試用例。 解題思路 個位數字只取決於底數的個位 b = N % 10 及指數 N。
LeetCode Maximum Depth of Binary Tree:二叉樹最大深度遞歸解法
題目描述 給定一棵二叉樹,求其最大深度。深度定義:從根節點到最遠葉節點路徑上的節點數(含根與葉)。 解題思路 遞歸定義: 空樹深度為 0。 非空樹深度 =