XMU 1466 祖先極值問題:樹上倍增與線段樹離線查詢解法詳解
問題描述 給定一棵以節點 0 為根的有向樹,樹中每個節點擁有一個權值。需要回答多組查詢:對於節點 v 與整數 k,求從 v 到其第 k 個祖先節點(包含 v 與
C++ 指針核心概念深度解析(二):類型提取、指向類型、值與內存佔用
從聲明語法快速提取兩類「類型」 指針的類型(指針本身類型) 刪去聲明中的變量名,剩下的即為指針類型: int* ptr; // 刪去 pt
C++ 指針核心概念深度解析(一):四大屬性與類型聲明讀法
指針的四大核心屬性 搞懂一個指針,必須搞清四個維度: 指針的類型:指針變量本身的類型(如 int*、int**、int(*)[3])。 指針指向的類型:解引用
C++ 運算符重載實戰:關係運算符(<、>、==)與浮點數比較容錯
背景動機 為 Distance 類(英尺+英寸)重載關係運算符,使其支持自然語法比較(d1 < d2)。由於涉及 double 浮點數,需引入誤差容忍閾值避免精
POJ 1014 Dividing:多重背包判斷彈球能否公平分配
題目大意 有 6 種價值(1~6)的彈球,每種數量給定(最多 20000)。判斷能否將所有彈球分成兩堆,使總價值相等。多組測試,全 0 結束。 問題轉化:多重
內存越界定位實戰:GDB Watchpoint 捕獲緩衝區溢出
問題現場 代碼中 badstr[32] 被 memset(str, 0, 64) 越界寫入,導致緊鄰的變量 fd 被意外修改為 0,最終程序崩潰(總線錯誤)。
POJ 1321 棋盤問題:回溯法放置 k 個棋子
題目大意 給定 n × n 棋盤(n ≤ 8),某些格子禁止放置(標記為 .),可用格子標記 #。在可用格子中放置 k 個棋子(k ≤ n),要求任意兩棋子不同
POJ 3070 Fibonacci:矩陣快速冪求第 n 項模 m
題目大意 求斐波那契數列第 n 項(0 ≤ n ≤ 1,000,000,000)對 m 取模的結果。多組輸入,n = -1 結束。 數學建模:矩陣形式 斐波那
單鏈表就地反轉:C 語言實現與圖解(O(N) 時間 O(1) 空間)
問題描述 將單向鏈表 1→2→3→…→n 反轉為 n→…→3→2→1。要求就地反轉,不分配新節點,時間 O(N),空間 O(1)。 核心思想:三指針迭代 維護
C++ static 關鍵字全面解析:三大用法與演進歷史
引言 static 是 C/C++ 中最「多面」的關鍵字之一,歷經三次語義擴展: C 語言:靜態局部變量(保持狀態)。 C 語言:靜態全局變量/函數(
常數空間遍歷二叉樹:Deutsch-Schorr-Waite 指針反轉算法詳解
問題背景 遞歸/棧/隊列遍歷均需 O(N) 輔助空間。DSW 算法利用指針反轉,在 O(1) 額外空間、O(N) 時間內完成任意圖(含二叉樹)遍歷,且遍歷結束後
MFC 控件變量詳解:DDX 機制、Control/Value 區別與 UpdateData 用法
概述 在 MFC 對話框開發中,控件變量 是將對話框控件(如編輯框、按鈕、列表框)與 C++ 類成員變量關聯的橋樑。通過 DoDataExchange (DDX
C++ STL queue 完整指南:FIFO 隊列核心用法與實例
queue 簡介 std::queue 是 STL 中實現**先進先出(FIFO)**語義的容器適配器。底層默認使用 deque,也可指定 list。它封裝了底
C++ STL priority_queue 完整指南:從原理到實戰
優先隊列概述 std::priority_queue 是 C++ STL 提供的容器適配器,底層默認以 vector 為容器,利用堆算法(make_heap、p
NJUST 1746 Similar Number 題解:離線處理與區間查詢優化
題目背景 NJUST 1746(南京邀請賽 J 題)要求在給定數組中,對多次查詢回答:區間 [l, r] 內有多少對「相似數」。兩個數若各位數字組成的多集合相同
字典樹(Trie)核心原理與 C++ 實戰詳解
前言 字典樹,又稱前綴樹或 Trie,是一種用於高效存儲和查詢字符串集合的樹形數據結構。它利用字符串的公共前綴來減少查詢時間,廣泛應用於自動補全、拼寫檢查、IP