C++ delete 操作符深度解析:單一對象、數組與放置 new
一、單一對象內存釋放 delete ptr; 執行兩步: 調用對象析構函數:~Type()。 釋放內存:operator delete(ptr)(全局或類特定
HDU 2577 How to Type:鍵盤輸入最少按鍵次數 DP
問題描述 輸入一個字符串(含大小寫字母)。鍵盤操作: 按字母鍵:1 次(輸出當前大小寫模式下的字母)。 按 Shift:1 次(臨時切換大小寫,僅對下一鍵有效
HDU 4396 多狀態 SPFA:至少 k 邊最短路
問題描述 給定無向圖,求從 S 到 T 至少經過 K 條邊的最短路徑長度。N ≤ 5000, M ≤ 200000, K ≤ 500?實際 K/10 向上取整作
UVA 10020 Minimal Coverage:貪心區間覆蓋
問題描述 給定目標區間 [0, M] 和若干線段 [L, R],選擇最少數量的線段完全覆蓋 [0, M]。輸出選擇的線段數量及線段列表(按左端點排序)。無解輸出
C++ Radix Tree 基數樹實現詳解
什麼是 Radix Tree? Radix Tree(基數樹/壓縮前綴樹)是一種空間優化的 Trie 樹。每個內部節點最多有固定數量的子節點(如 64 個),通
HDU 1513 Palindrome:最少插入次數構成回文
問題描述 給定長度 n (≤5000) 字符串,求最少插入多少字符可使其成為回文串。插入可在任意位置。 方法一:DP 直接求最少插入 dp[i][j]:區間
HDU 1598 最舒適的路:並查集 + 邊排序枚舉
問題描述 給定無向圖,每個節點有一個權值。求從 S 到 T 的路徑,使得路徑上節點權值的最大值與最小值之差最小。輸出該最小差值。 核心思路:雙指針 / 滑動窗
LeetCode Reverse Words in a String:單詞反轉詳解
問題描述 給定一個字符串,按單詞反轉順序。單詞由空格分隔。需處理: 首尾空格去除。 單詞間多餘空格合併為一個。 例:the sky is blue → bl
HLG 1597 最長非遞增子序列:O(n²) DP 解法
問題描述 給定長度 n (≤1000) 的整數序列,求最長非遞增子序列長度(允許相等)。多測試用例。 DP 定義與轉移 dp[i]:以 a[i] 結尾的最長非
HDU 1160 FatMouse's Speed:權重遞增速度遞減最長序列
問題描述 給定若干老鼠的體重 W 和速度 S。找最長序列,使得體重嚴格遞增、速度嚴格遞減。輸出序列長度及對應老鼠的原始編號(按輸入順序 1-based)。 轉
POJ 1455 Crazy Tea Party:循環排列計數
問題描述 n 個人圍圓桌就座,每人有一杯茶。規則:每人將茶遞給左邊第 k 個人(k 固定)。經過若干輪後,要求每人手中的茶杯都不相同(即排列無不动點)。求滿足條
HDU 3068 最長回文子串:Manacher 算法 O(n) 詳解
問題描述 給定長度 ≤ 110,000 的小寫字母字符串,求最長回文子串長度。多測試用例,空行分隔。 Manacher 算法核心思想 利用回文對稱性避免重複比
ZOJ 3422 Go Deeper:二分答案 + 2-SAT
問題描述 給定遞歸過程 go(dep, n, m):輸出 dep;若 dep < m 且 x[a[dep]] + x[b[dep]] != c[dep],則遞歸
PAT 1054 The Dominant Color:眾數查找
問題描述 給定 M×N 的圖像,每個像素有一個顏色值(整數)。找出出現次數超過 M*N/2 的顏色(佔優顏色)。保證存在且唯一。 解法:哈希表計數 遍歷所有像
ZOJ 3686 後序遍歷線段樹:子樹翻轉與查詢
問題描述 給定一棵有根樹(根為 1),每個節點初始值為 0。支持兩種操作: o u:翻轉以 u 為根的子樹中所有節點的值(0↔1)。 q u:查詢以 u 為根
PAT 1056 Mice and Rice:比賽排名模擬
問題描述 Np 隻老鼠比賽,每次最多選 Ng 隻進行比較,體重最大者晉級下一輪。給定初始順序與分組規則,輸出每隻老鼠的最終名次。 模擬流程 讀取 Np, N
POJ 2259 Team Queue:隊列模擬與鏈表優化
問題描述 模擬「團隊隊列」:每個元素屬於某個團隊。入隊時,若隊列中已有同團隊成員,則插入到該團隊最後一名成員之後;否則加入隊尾。出隊按正常隊列順序(隊頭優先)。
Codeforces 111D Petya and Coloring:組合數學 + DP
問題描述 用 k 種顏色塗 n×m 的矩形網格。要求:對於任意列分割點 i(1 ≤ i < m),左側 1~i 列使用的顏色種類數等於右側 i+1~m 列的顏色