LeetCode 鏈表專題總結:常見錯誤與核心技巧
鏈表操作四大常見錯誤 空指針解引用:取 `val` 或 `next` 前未判空 → Runtime Error 邊界條件遺漏:空鏈表、單節點、頭尾節點特殊處理
C++ Primer Plus 學習筆記:虛函數與動態多態實現機制
多態性分類 靜態多態:函數重載、運算符重載、模板——編譯期確定 動態多態:虛函數——運行期根據對象實際類型確定調用 虛函數核心概念 基類指針/引用指向派
HDU 1536 S-Nim:SG 函數與博弈論應用
題目大意 給定 n 個合法取子數 `move[i]`。進行 m 個查詢,每查詢給出 l 堆石子,每堆大小為 `num`。兩人輪流取子,每次從任意一堆取走 `mo
HDU 4720 Naive and Silly Muggles:幾何模板求三角形外接圓與點圓關係判斷
題目背景 給定三點構成三角形,及第四點。需判斷是否存在一個圓,使得三角形三頂點在圓上,而第四點在圓外(或邊界上視為不在圓內)。若存在輸出 Safe,否則 Dan
HDU 4725 The Shortest Path in Nya Graph:Dijkstra + 虛擬層節點建圖
題目大意 給定 n 個節點、m 條無向邊,每個節點屬於某一層。相鄰層間移動代價為 c。求從節點 1 到節點 n 的最小代價。 核心思路:虛擬層節點建圖 + D
HDU 3033 I love sneakers! 分組背包問題詳解(每組至少選一件)
題目大意 給定 k 種鞋子,共 n 雙,每雙鞋子有花費和價值。你有 m 元錢,要求每種鞋子至少買一雙,求能獲得的最大價值總和。若無法滿足條件則輸出 Imposs
UVA 10106 Product:大整數乘法(模擬豎式乘法)
UVA 10106 要求計算兩個最多 250 位整數的乘積。標準類型無法容納,需用數組模擬豎式乘法。 算法思路 用數組 ans[] 存儲中間結果,下標 i
CodeChef Carvans 題解:超大輸入下的 O(N) 單次掃描與快速 IO 技巧
CodeChef CARVANS 題目本質簡單:計算數組中「後一個數 ≤ 前一個數」的個數(含首個數)。但數據量極大(超 400 萬整數),普通 cin/cou
C/C++ 程序運行時間測量方法:ftime 高精度計時
在 C/C++ 中測量程序運行時間,常用 <sys/timeb.h> 提供的 ftime 函數,精度可達毫秒級。以下是完整示例: #include
HDU 4726 Kia's Calculation:貪心構造最大差值數組
本題要求從兩個數字字符串中各取一位構造新數字,使得結果數字盡可能大。核心思路是貪心:優先構造高位的大數字,並妥善處理前導零問題。 算法邏輯 統計兩字符串中各
HDU 2063 過山車:二分圖最大匹配入門模板題
經典的二分圖最大匹配模板題「過山車」。題目背景:遊樂場過山車每排兩座位,女生必須找男生做 partner。給定 K 對願意配對的男女編號,求最大配對數,即二分圖
SCUT 2014 B題 Numbers:DFA 有限自動機判斷科學計數法合法性
本題要求判斷給定字符串是否符合科學計數法格式,如 A+1.5Be+8C,其中 A、B、C 為可選的空格/符號,指數部分必須為整數。採用確定性有限自動機(DFA)
LeetCode 刷題筆記:Linked List Cycle II 環形鏈表入口檢測
這道題乍看稍有難度,但掌握數學關系後豁然開朗。最初我嘗試用雙指針相遇後再安排第三個指針移動,推導各種條件關系,其實大可不必那麼麻煩——核心只是簡單的數學等式。
Boost.Serialization 進階:拆分 serialize 為 save/load 實現版本控制
在上一篇《Boost.Serialization 用基類指針轉存派生類》中,我們使用單一的 serialize 函數實現序列化。但實際上,該函數根據歸檔類型(保
UVA 11367:狀態壓縮Dijkstra解決加油最小花費
問題描述 n個城市(≤1000),m條雙向路。城市i油價c_i。油箱容量C(≤100)。1油跑1距離。 起點s油量0,終點t。求最小花費到達t,或 imposs
UVA 1371 Period:二分答案+DP判斷字符串分段編輯距離
問題描述 給定字符串A(長m)和B(長n)。將B分割成若干子串,每個子串編輯成A。單次編輯操作:插入/刪除/替換一字符。 目標:最小化**所有子串中最大編輯距離
STL關聯容器:set與multiset完整指南
核心特性 特性setmultiset 鍵值唯一性唯一(無重複)允許重複 底層結構紅黑樹(自平衡BST)紅黑樹 元素有序是(按比較函數)是 插入/刪除/查找O(