UVA 301 Transportation:鐵路訂單選擇的 DFS 暴力搜索
問題建模 鐵路線有 num 個車站,容量 cap。 ord 個訂單,每單:起站 s、終站 e、乘客數 p、收益 p*(e-s)。 選擇訂單子集,使任意區段乘客
POJ 1192 最優連通子集:網格圖上的樹形 DP
題目轉化 給定 n ≤ 1000 個點,每點有坐標 (x,y) 和權值 c。曼哈頓距離為 1 的點相連,形成森林(無環,因距離 1 邊不成環)。求連通子圖最大權
C++ int 轉 string 的 4 種主流方法對比
方法一:sprintf(C 風格,通用性強) int val = 12345; char buf[32]; sprintf(buf, %d, val); str
ZOJ 1151 Word Reversal:棧實現單詞反轉
題目要求 多測試用例。每行輸入一句話(單詞間單空格分隔),輸出每個單詞字符反轉後的句子,單詞順序不變。例如:I am happy → I ma yppah。
海量日誌分析:分治 + Hash 統計 5 分鐘內登錄超 10 次的 IP
問題背景 10GB 日誌文件,每行格式:IP 日期 時間。需找出連續 5 分鐘內登錄超過 10 次的所有 IP。內存無法載入全量數據。 分治 + Hash 核
HDU Binary Tree Traversals:從前序+中序重建樹並輸出後序
問題描述 給定二叉樹的前序遍歷和中序遍歷序列(節點值唯一),求後序遍歷序列。節點數 n ≤ 1000,多測試用例。 核心原理 前序:根 → 左 → 右(第一
C++ STL priority_queue 完整指南:原理、源碼與實戰
核心特性 容器適配器:基於底層容器(默認 vector)+ 堆算法實現。 訪問限制:只能 push 入隊尾,pop 隊首,top 訪問最大元素,不支持遍歷/迭
HDOJ 1561 森林中的泛化背包:樹形 DP 解題報告
題目建模 每個城堡最多有一個前置城堡,形成森林結構(多棵樹)。擊破城堡有收益,需選擇恰好 m 個城堡使總收益最大。這是典型的樹上分組背包(泛化背包)問題。 狀
快速排序算法深度解析:原理、實現與穩定性分析
算法核心思想 快速排序是對冒泡排序的改進,採用分治策略:通過一趟排序將數據分為左右兩部分,左邊所有元素小於基準值,右邊所有元素大於基準值,然後遞歸處理兩側。其核
HDU 4300 Clairewd's Message:KMP 算法解析與實現
題目背景與理解 HDU 4300 Clairewds message 是一道經典的字符串匹配問題,核心考察 KMP 算法的應用。題目給定一組密文與明文的映射關係
C++ 異常處理深度解析(上):從傳統錯誤處理到現代異常機制
1. 傳統錯誤處理的困境 C 語言時代主要三種方式,均有嚴重缺陷: 返回錯誤碼/全局錯誤狀態:調用鏈層層檢查返回值,代碼膨脹,正常邏輯被錯誤處理淹沒;函數返回
HDU 4468 Spy:KMP + 貪心構造最短生成串
問題重述 給定字符串 r,求字符串 s,使得 s[1] + s[1..2] + s[1..3] + ... + s[1..n] = r。即 r 由 s 的所有前
HDU 1285 拓撲排序:字典序最小的合法拓撲序列
題目大意 n 個節點(1~n),m 條有向邊。輸出字典序最小的拓撲序列(即每步選入度為 0 的最小編號節點)。n ≤ 500。 算法:Kahn 算法 + 優先
HDU 1542 Atlantis:矩形面積聯合計算與掃描線算法實現
題目大意 給定 N ≤ 100 個矩形(坐標為實數),求它們聯集面積。多測試用例,N=0 結束。 掃描線 + 線段樹 模板 將矩形左右邊作為事件: x, y
POJ 1037 A New Deck:DP 計數與第 K 個 Up-Down 排列構造
問題重述 Up-Down 排列:a1 a3 ...(交替不等號)。給定 n (≤20) 和 c,輸出字典序第 c 個 Up-Down 排列(1-indexe
棧序列合法性判斷:模擬壓入彈出驗證彈出序列
問題大意 給定壓入序列 pushSeq 和彈出序列 popSeq,長度 n,元素唯一。判斷 popSeq 是否為某合法棧操作序列的彈出順序。 核心算法:模擬棧
POJ 1451 T9 字典樹:手機九鍵輸入法聯想算法詳解
問題場景 T9 輸入法:數字鍵 2-9 對應字母。給字典(單詞 + 頻率),按字典序輸入。對每個查詢數字串(以 1 結尾),輸入過程中每一步(按下第 k 個數字