C++ 實現不可繼承類:私有構造 + 虛繼承友元模式
方法一:私有構造/析構 + 工廠方法 class A { public: static A* getInstance() { return new A;
C++ Reference 三位一體诠釋:別名、指針、多態變量
三重身份 Alias(別名):int &r = x; 使 r 與 x 同一實體,語法上無區別,&r == &x。 Pointer(指針):底層實現為指
cocos2d-x CCArray 源碼深度分析:動態數組實現細節
類結構 CCArray : public CCObject,內含 ccArray* data。 ccArray 為 C 結構體:{ unsigned num,
C++ 我想這樣用(五):面向過程 vs 面向對象、引用、new/delete、默認參數、inline、重載、模板
1. 引用 vs 指針 C++ 引入引用 &,與 C 指針 * 共存易混淆。建議: C++ 程式員:善用引用,避免裸指針。 C 程式員:堅持指針,不碰
DP Good Sequences:最長不互質相鄰子序列的動態規劃與因數優化
問題描述 給定 N 個嚴格遞增的正整數,求最長子序列(不一定連續),使得相鄰兩數不互質(即 1)。輸出最大長度。 動態規劃狀態定義 設 dp[i] 為以第
POJ 2480 Longge's Problem:積性函數求 Σ gcd(n, i)
數學推導 要求 S(n) = Σ_{i=1..n} gcd(n, i)。 令 g(d) = #{ i | 1≤i≤n, gcd(n,i)=d }。則 S(n)
POJ 3691 DNA Repair:AC 自動機 + DP 求最小修改次數
問題建模 給定長度 ≤ 1000 的 DNA 序列(A,C,G,T),及若干禁止模式串。可修改序列中任意字符(代價 1),求使序列不包含任何禁止模式的最小修改代
POJ 2431 Expedition:貪心 + 優先隊列解決加油問題
問題重述 卡車距城鎮 L,初始油 P。每單位距離耗 1 油。路徑上有 N 個加油站 (N ≤ 10000),第 i 站距終點 d_i,供油 f_i。油箱無限大。
Codeforces Round #261 (Div. 2) 題解全集:A-E 五題詳解
A. Pashmak and Garden 給兩頂點座標,判斷能否構成正方形,能則輸出其餘兩頂點。 分類討論:x 差為 0 → 水平邊;y 差為 0 → 豎直邊
HDU 1281 棋盤游戲:二分圖最大匹配 + 關鍵邊判定
問題轉化 棋盤上放置棋子,每個格子最多一個。求最大匹配數,並找出「重要空格」:刪除該格子(邊)後最大匹配數減少的格子。 算法流程 建立二分圖:行號為左部
Java List 對象通用排序:反射 + 泛型 + 策略模式實現
痛點 資料庫查出的 List<T> 需按不同字段排序,若每字段寫一個 Comparator 極其冗餘。 通用解決方案 利用反射動態調用 gette
UVA 11624 Fire!:雙源 BFS 求逃離迷宮最短時間
問題建模 迷宮中有牆(#)、Joe(J)、火(F)。火與 Joe 同速擴散(上下左右)。Joe 若能到達邊界格子即逃脫。求最短逃脫時間,或輸出 IMPOSSIB
HDU 2602 Bone Collector:經典 0/1 背包問題詳解
問題描述 N 根骨頭 (N ≤ 1000),每根有價值 value[i] 和體積 vol[i]。背包容量 V ≤ 1000。求最大總價值。 動態規劃定義 dp
POJ 3225 區間操作:線段樹維護區間覆蓋與異或
問題轉化 對區間進行交(U)、並(I)、差(D)、補(C)、對稱差(S)五種操作,最終輸出結果集合。 關鍵技巧:將座標擴大 2 倍,偶數點代表端點,奇數點代表區
UVA 11008 Antimatter Ray Clearcutting:狀態壓縮 DP + 記憶化搜索
問題大意 給定 n ≤ 16 棵樹的座標,每次可砍倒一條直線上的所有樹。要求至少砍倒 k 棵樹,求最少砍伐次數。 狀態壓縮表示 用 16 位二進制數表示哪些樹
UVA 10497 Sweet Child Makes Trouble:錯排問題與大整數處理
問題背景 Tintin 偷拿了 n 件物品(n ≤ 800),將它們重新排列且每件物品都不在原位置。求排列方案數。輸入以 -1 結束。 數學模型:錯排公式 錯
UVA 11388 GCD LCM 解題詳解:從最大公約數與最小公倍數反推數對
問題重述 給定兩個正整數 G 和 L,要求找出滿足 gcd(a, b) = G 且 lcm(a, b) = L 的正整數對 (a, b),其中 a ≤ b。若有