HDU 3333:樹狀數組 + 離線查詢求區間不重複數字和
與 HDU 3874 同構,唯一差異:數值需離散化 數值範圍 10^9,須先離散化。其餘邏輯完全一致:離線按右端點排序,掃描線維護每個數值最後出現位置,樹狀數組
Codeforces 333B Chips:貪心策略在棋盤邊緣放置最大晶片數
題目重述 N×N 棋盤,M 個障礙格。只能在**非角落的邊緣格**放置晶片。所有晶片同時向對面移動(上→下、下→上、左→右、右→左),移動過程中不得經過障礙格,
HDU 3280 Cheapest Palindrome:區間 DP 求最小成本回文構造
題目模型 給定字串 S(長度 M ≤ 2000),每字元有插入成本 add[c] 與刪除成本 del[c]。可在任意位置插入/刪除字元,使最終字串為回文。求最小
UVA 473 Raucous Rockers:三維 DP 解決 CD 收錄順序問題
題目模型 N 首歌(順序固定),M 張 CD,每張容量 T。歌曲必須按順序分配到 CD,每張 CD 內順序不變。求最多能收錄多少首歌。 狀態定義 dp[i][
UVA 586 Instant Complexity:遞歸解析循環嵌套計算時間複雜度
問題描述 給定一段偽代碼,包含 LOOP n、OP n、END 語句。計算程序的時間複雜度多項式,按 n 的冪次從高到低輸出(如 n^3+2n^2+5)。 遞
POJ 1556:計算幾何判斷線段相交 + Bellman-Ford 最短路
題目模型 10×10 區域內有 n 組垂直障礙線段(每組 3 條,形成 2 個通道)。從西側入口 (0,5) 到東側出口 (10,5),求不穿越任何障礙線段的最
Windows 程式設計:char*、CString、WCHAR* 三者互轉完全指南
背景:GDI+ 需 Unicode(WCHAR*),MFC 用 CString,檔案讀取得 char* 三者互轉是 Windows 開發高頻需求,核心在於多位元
C++ volatile 關鍵字深度解析:編譯器優化阻斷與硬體訪問
核心語義:告訴編譯器「這個變量可能隨時被外部改變」 volatile 是類型修飾符,修飾的變量每次讀寫都必須直接訪問內存地址,禁止編譯器將其值缓存在寄存器中進行
UVa 567 Risk:20 國棋盤最短征服路徑 BFS
題目模型 20 個國家(1~20),輸入給出邊列表(僅列出 i < j 的邊),多組查詢詢問從 A 到 B 最少征服幾個國家(含終點,鄰國為 1)。多測資直到
HDU 1372 Knight Moves:棋盤上騎士最短路徑 BFS
題目模型 標準 8×8 國際象棋棋盤,給定起點、終點(如 e2 e4),求騎士(「日」字走法)最少步數。多組測資,直到 EOF。 BFS 模板應用 狀態:(
POJ 2182 Lost Cows:從逆序數還原排列
題目轉化 N 頭牛(1..N)排成一列,已知第 i 位牛前面有 a[i] 隻編號比它小的牛(a[1]=0 不給)。求原始排列。 等價於:給定長度 N 的序列 a
HDU 1010 Tempter of the Bone:DFS + 奇偶剪枝 + 可達性剪枝
題目重述 N×M 迷宮(N,M < 7),起點 S、終點 D,恰好在第 T 秒到達 D。每秒移動一格(上下左右),走過的格子會塌陷不可再進入。判斷是否可能存活。
LeetCode Pow(x, n):快速冪遞迴實現與邊界處理
分治遞迴:O(log n) 計算 x^n 利用 x^n = (x^(n/2))^2(n 為偶數)或 x * (x^(n/2))^2(n 為奇數),遞迴深度僅 l
HDU 4635 Strongly connected:Tarjan 縮點 + 最大邊數構造
題目核心:有向圖加邊使強連通分量數為 2 且邊數最大 給定有向圖,可任意加邊(不含自環、重邊),要求最終圖不是強連通的(即至少有兩個強連通分量),且邊數最大。輸
HDU 4612 Warm up:橋、雙連通分量縮點與樹直徑
題目轉化:加一條邊使剩餘橋最少 給定無向圖(可能有重邊),需新增一條邊,使圖中橋的數量最小。橋的定義:刪除後圖不連通的邊。觀察可知: 原圖的橋在雙連通分量縮點
HDU 3333 與 3874:線段樹 + 離線查詢求區間不重複數字和
題目共性與核心挑戰 兩題皆要求對靜態陣列處理多筆區間查詢:求區間內不重複數字之和。HDU 3333 數值範圍達 10^9,必須先做離散化;HDU 3874 數值
用兩個佇列實現堆疊:C++ 模板類完整實現與原理解析
核心思路:以佇列模擬堆疊的先進後出特性 堆疊的特性是「先進後出」,而佇列是「先進先出」。要用兩個佇列實現堆疊,關鍵在於如何讓佇列的隊尾元素(最新加入的)成為可刪