C++ 內存佈局探秘(一):讓 new 出的兩個變量在堆上地址連續
背景知識 棧:向低地址增長,編譯器自動管理,存參數/局部變量/返回地址。 堆:向高地址增長,程序員手動管理 (new/delete, malloc/free)
C++ 陷阱大全(一):字符串、容器、指針、運算符與整型提升的隱性坑
字符串與標準庫 string string s(hello); cout << s.size() << endl; // OK: 5 // co
UVA 10069 Distinct Subsequences:大整數 DP 計數子序列出現次數
問題描述 給定母串 S (長 ≤ 10000) 和子串 T (長 ≤ 100),求 T 在 S 中作為子序列(不必連續,下標嚴格遞增)出現的次數。答案 ≤ 10
UVA 11486 Hyper Prefix Sets:字典樹(Trie)求最大權值前綴
問題描述 給定 n 個字符串,需找到一個字符串 u 作為前綴,使得 u 的長度 |u| 乘以以 u 為前綴的字符串數量 cnt(u) 最大。輸出最大權值 max
HDU 2082 找單詞:生成函數(母函數)計數經典應用
問題描述 給定 26 個字母 A~Z 的可用數量 x1..x26 (≤ 20),字母價值為其序號(A=1, B=2, ..., Z=26)。組成單詞(順序無關,
HDOJ 4607 公園遊覽:樹的直徑與查詢優化
問題描述 給定一棵 N 個節點的樹(邊權為 1),需回答 M 個查詢:選擇 K 個節點作為訪問目標,從任意入口(節點)出發,走完這 K 個節點所需的最短路徑長度
LeetCode 105 從前序與中序遍歷構造二叉樹:遞歸分治法
問題描述 給定前序遍歷 preorder 和中序遍歷 inorder,構造二叉樹。假設無重複值。 遞歸分治核心邏輯 前序第一個元素 = 根節點值。 在中序中
LeetCode 最大子數組和:O(n) 動態規劃與分治法雙解析
問題描述 給定一個整數數組 nums,找出一個具有最大和的連續子數組(至少包含一個元素),返回其最大和。 示例:[-2,1,-3,4,-1,2,1,-5,4]
UVa 12086 電位器:樹狀數組(Fenwick Tree)單點更新區間查詢模板題
問題描述 維護一個長度為 n (≤ 200,000) 的數組,支援兩種操作: S i v:將第 i 個元素修改為 v(單點更新)。 M l r:查詢區間 [l
LeetCode 二叉樹層序遍歷 II:自底向上的 BFS 兩種實現
題目需求 給定二叉樹,返回自底向上的層序遍歷結果。即葉子層在前,根節點在後。每層內左到右。 解法一:逐層隊列 + 結果反轉 標準 BFS:隊列存儲當前層節點,
HDOJ 4608 I-number:數位和為10倍數的下一個數
問題定義 給定 x,求最小的 y > x,使得 y 的各位數字和是 10 的倍數。x 長度可達 105,需高精度處理。 暴力增量 + 數位和檢查 由於密
HDU More is Better:並查集求最大朋友圈規模
題目轉化 107 個男孩,給定 n 對直接好友關係。好友具有傳遞性(A-B, B-C ⇒ A-C)。求最大連通分量大小(即最大朋友圈人數)。 並查集核心實現與
PAT 1079 Total Sales of Supply Chain:供應鏈樹形DP計算總銷售額
問題建模 供應鏈為一棵以 0 為根的樹: 根節點:供應商,單價 P 中間節點:經銷商,價格上浮 r% 葉節點:零售商,直接面向客戶,有銷售量 求所有零售商總
UVA 11589 拯救總統:四維網格與前綴和優化
問題建模 給定 n 個爆炸區域,每個區域為一個四維長方體(x, y, z 空間座標 + time 時間)。需查詢:在多少個位置可以放置一個大小為 (dx, dy
Java 字符串對象創建機制深度解析:new String("abc") 到底創建幾個對象?
經典面試題標準答案 String s = new String(abc); 創建 2 個對象: abc - 字符串常量池中的對象(編譯期創建) new Str
UVA 11589 Save the President:四維暴力枚舉與前綴和優化
問題建模:四維時空安全區 炸彈以長方體區域 + 時間區間 定義危險區。總統需找大小為 x×y×z×t 的安全超長方體(左下角固定),計算有多少不同的時空位置滿足
C++ 構造函數陷阱深度解析:函數聲明誤判與 new 初始化差異
陷阱一:最令人困惑的解析 class F { public: F() {} F(int) {} void f() {} }; void