HDU 2502 月之數:遞推關係與動態規劃
題目大意 定義數列 a[n] 滿足某遞推關係,求 a[n] 的值。經分析得遞推公式: cas[i] = cas[i-1] * 2 num[i] = num[i-
POJ 1699 Best Sequence:DFS + 狀態壓縮 DP 求最短超級串
題目大意 給定 n(n ≤ 12)個字串,求包含所有字串作為子串的最短字串長度。允許字串重疊。若一字串已被另一字串包含,可直接刪除。 核心思路:狀態壓縮 DP
POJ 3635 Full Tank?:多維狀態最短路(油量狀態 + Dijkstra)
題目大意 N 座城市,M 條雙向道路(長度 d,單位長度耗油 1)。每城市有加油站,單位油價 p_i。車油箱容量 C。Q 個詢問:從城市 S 到 T 的最小花費
C++ I/O 重定向實現:自定義 streambuf 將輸出導向 Socket/串口
背景與動機 C++ 標準庫的 I/O 體系基於 streambuf 緩衝區抽象。通過繼承 std::streambuf 並重寫關鍵虛函數,我們可以將 std::
UVA 107 The Cat in the Hat:數學推導求貓的總數與高度和
題目大意 初始有一隻高度為 H 的貓,它帽子裡有 N 隻小貓,每隻小貓高度是大貓的 1/(N+1)。每隻小貓帽子裡又有 N 隻更小的貓,以此類推,共 K 代。最
NYOJ 91 階乘之和:貪心與階乘性質解題
題目大意 給定整數 n,判斷是否能從 {1!, 2!, ..., 9!} 中選取若干個(可重複?不,題目隱含每個階乘最多用一次)使其和等於 n。實際為:n 能否
UVA 11300 Spreading the Wealth:環形分金幣與中位數優化
題目大意 n 個人圍成一圈分金幣,每人初始有 A[i] 個。每次操作:每人將一半金幣給右邊鄰居(或類似傳遞規則),最終希望每人擁有相同數量(平均值 M = su
NYOJ 119 士兵殺敵(三):RMQ ST 算法裸題求區間最大值最小值差
題目大意 有 N 個士兵排成一排,編號 1~N,每人殺敵數不同。給定 Q 次詢問,每次詢問區間 [L, R] 內殺敵最多與最少的差值。標準 RMQ(Range
C++ 深拷貝、淺拷貝、禁止拷貝與空類默認成員函數全解析
核心概念:深拷貝 vs 淺拷貝 判斷是深拷貝還是淺拷貝的金標準:拷貝構造函數執行後,兩個對象是否完全獨立? 若修改其中一個不影響另一個,則為深拷貝;若共享底層資
POJ 1986 Distance Queries:LCA 離線與在線算法完整對比
題目大意 給定一棵有根樹,多次詢問兩節點 u、v 之間的最短距離。距離公式:dist(u,v) = dist[root][u] + dist[root][v]
HDU 4396 More lumber is required:二維 SPFA 求至少經過 K 條邊的最短路徑
題目大意 給定帶權無向圖(可能有自環),指定起點 S 和終點 T,求從 S 到 T 且至少經過 K 條邊的最短路徑長度。若不存在則輸出 -1。 關鍵觀察與狀態
C/C++ 區域類與嵌套類詳解:作用域、訪問權限與應用場景
引言 C++ 允許在函數內部定義類(區域類),也允許在類內部定義類(嵌套類/內部類)。兩者雖然語法相似,但語義、作用域規則、訪問權限有本質區別。本文參考《C++
UVA 1388 Graveyard:圓周上雕塑均勻分布的最小移動距離
題目大意 有一條周長為 10000 的圓,上面等距分布著 n 個雕塑。現再加入 m 個雕塑(位置任意),希望 n+m 個雕塑最終仍能均勻分布。允許移動現有雕塑,
POJ 3468 線段樹區間增減與區間求和詳解
題目大意 給定 n 個數,支援兩種操作: C A B C:區間 [A, B] 內每個數增加 C Q A B:查詢區間 [A, B] 的和 經典的線段樹「區間
LeetCode 41. First Missing Positive:O(n) 時間常數空間解法
題目描述 給定一個未排序的整數陣列,找出其中沒有出現的最小正整數。要求時間複雜度 O(n) 且僅使用常數額外空間。 輸入 [1,2,0] → 輸出 3 輸入
POJ 1251 解題報告:Prim 演算法與輸入輸出優化
題目背景 POJ 1251 是一道經典的最小生成樹問題,要求使用 Prim 演算法求解。作者最初使用 cin/cout 處理複雜的字母與數字輸入,雖然邏輯正確卻
C++ 實現大數相乘:模擬手算乘法演算法詳解
前言 當兩個整數超出 int、long 等基本類型的表示範圍時,我們稱之為「大數」。例如 11111111111111111111111111111111111
UVA 11375 Matches:大整數 DP 計算火柴排列數
問題描述 有 n 根火柴,可組成數字 0-9(分別消耗 6,2,5,5,4,5,6,3,7,6 根)。火柴不必用完,不能有前導零。求能組成多少個不同的非負整數。