排序算法系列:插入排序原理、優化與工程化應用
基本思想 插入排序將陣列分為「已排序區」與「未排序區」。初始已排序區僅含第一個元素。每次從未排序區取出首元素,在已排序區從右向左掃描,將大於該元素的值右移,直到
Croc Champ 2013 Round 2 E 題解:樹分治 + BIT 統計雙約束路徑對數
問題描述 給定一棵帶權樹(邊權 w,邊長 1),求滿足 路徑長度之和 ≤ L 且 路徑邊權之和 ≤ W 的無序點對 (u, v) 數量。N ≤ 10^5,需 O
排列組合基礎:從 m 個元素中取 n 個全排列數的遞歸與迭代計算
問題定義 給定 m 個互不相同的元素,從中取出 n 個(n ≤ m)進行排列,求排列總數。即計算排列數 P(m, n) = m! / (m-n)! = m ×
數位 DP 入門精講:HDU 2089、3555 及相鄰數差 ≥2 三大經典題型全解析
什麼是數位 DP? 數位 DP(Digit DP)是針對「統計滿足某數字性質的整數個數」問題的一類動態規劃技巧。核心思想:將數字拆解為各位數字,從高位到低位按位
單源最短路徑算法詳解:Dijkstra 核心思想、松弛操作與 C 語言實現
問題定義 給定帶權有向/無向圖 G=(V,E),邊權 w≥0,指定源點 s,求 s 到其餘所有頂點的最短路徑長度。核心性質:**最短路徑的任意子路徑也是最短路徑
C++ 實現二叉搜索樹(BST):插入、刪除、查找與遍歷完整教程
二叉搜索樹核心性質 對任意節點 X,左子樹所有鍵值 < X,右子樹所有鍵值 > X。這一性質保證了中序遍歷輸出有序序列,也使得查找、插入、刪除均可在
C++ 工廠模式實戰:用函數指針映射實現 XML 驅動的控件動態創建
項目背景 在基於 WTL 的自繪控件庫中,為了靈活配置控件樣式(顏色、字體、圖片、位置等),採用 XML 方案:`build.xml` 定義控件類型、佈局、文本
UVa 10651 Pebble Solitaire:狀態空間 BFS 求最少剩餘棋子
問題描述 UVa 10651《Pebble Solitaire》(彈珠獨奏)是一道經典的狀態空間搜索問題。給定一條長度為 12 的棋盤,初始佈局由 o(有棋子)
HDU 2063 過山車:二分圖最大匹配與 Hopcroft-Karp 算法詳解
問題背景 HDU 2063《過山車》是一道經典的二分圖最大匹配問題。題目要求在給定的二分圖中找出最大匹配數,這在任務分配、資源調度等場景中有廣泛應用。解決此類問
C++ 指針常量 vs 常量指針:核心區別與記憶口訣
一張表看懂本質區別 聲明口語名稱const 修飾對象指針值可改指向值可改典型用途 int* const p指針常量(常指針)指針本身 p❌ 否✅ 是固定
HDU 1718 Rank:統計排名的簡單邏輯
題目大意 給定 Jackson 的學號,隨後列出全班學生學號與成績(0-100),以 0 0 結束。計算 Jackson 的名次:成績最高者名次為 1,同分同名
NYOJ 117 求逆序數:歸並排序 O(n log n) 完美解法
問題描述 給定長度 n(n ≤ 10⁶)的整數序列,求逆序對數量。逆序對定義:i a[j]。多測試用例,結果可能超過 32 位整數範圍。 算法選擇:歸並排序
C++ 引用傳參詳解:原理、用法與避坑指南
引用傳參本質 引用是變量的別名,不佔用額外存儲空間。函數參數聲明為引用類型(T&),實參與形參綁定同一內存地址,函數內修改直接影響外部變量。 基礎示例 [cp
Linux 管道編程入門:pipe() 匿名管道父子進程通信
pipe() 基礎概念 pipe() 創建一個單向數據通道,返回兩個文件描述符: fd[0]:讀端(輸出端),用於 read() fd[1]:寫端(輸入端),
HDU 1010 Tempter of the Bone:回溯 + 奇偶剪枝 + BFS 預處理
問題描述 N×M 迷宮(N,M ≤ 6),小狗從 S 出發,每秒移動一格(上下左右),不可重複進入同一格,也不可停留。大門 D 在第 T 秒(T < 50)打開
UVa 138 Street Numbers:畢達哥拉斯數列與佩爾方程求解
問題重述 找出滿足下式的整數對 (m, n),其中 6 ≤ m < n: 1 + 2 + ... + (m-1) = (m+1) + (m+2) + ... +
C++ 核心邏輯 + C# 界面:英漢詞典 DLL 互調實戰
架構設計 採用經典的混合編程模式: C++ DLL:負責數據結構、文件 IO、二分查找/插入/刪除等核心邏輯,導出 __stdcall 函數 C# WinFo
HDU 2094 產生冠軍只需一條:找出從未失敗的選手
題目大意 給定 n 場比賽結果,每場格式為 winner loser。若存在且僅存在一位選手從未輸過,則該選手為冠軍,輸出 Yes;否則輸出 No。 核心洞察
i++ 與 ++i 的本質區別
UVA 11387 - The 3-Regular Graph (構造圖)
UVA 10883 Supermean 對數技巧防溢出計算加權平均
C/C++ 面試核心知識點總結(一):字節對齊、static、靜態成員
HDOJ 4417 Super Mario:分塊樹(劃分樹)+ 二分查詢區間第 k 小
ACE 框架跨平台編程(二):基本數據類型與寬字符移植層