HDU 1394: Minimum Inversion Number - 樹狀數組 / 線段樹 O(n log n) 求最小逆序數
題目大意 給一個 0..n-1 的排列,反覆將最後一個元素移至最前,共 n 次操作產生 n 個新排列。求這 n 個排列的逆序數中的最小值。 關鍵規律:移動最後
Codeforces 21C: Stripe 2 - 前綴和 + 計數構造題解析
題目大意 給長度 n 的整數數列 a[1..n],將其劃分為三段非空連續段,使三段和相等。求劃分方案數。 核心觀察 總和 sum 必須能被 3 整除,否則答
HDU 3695: Computer Virus on Planet Pandora - AC 自動機多模式匹配詳解
題目大意 給 n 個病毒特徵串(模式串)和一個程序串(文本串),判斷程序串包含多少種病毒。包含病毒的反串也算感染。程序串中 [qx] 表示 q 個字符 x(展開
最長單調遞增子序列 (LIS):O(n log n) 算法與所有解輸出
問題描述 給定長度 N 的隨機序列,求最長嚴格遞增子序列(LIS)長度,並輸出一個 LIS 以及所有 LIS。 O(n log n) 核心算法 維護數組 Le
Java 多線程實戰(三):實現 Callable 接口獲取返回值與 Future 異步結果
三種創建線程方式對比 方式介面/類方法返回值拋出異常適用場景 繼承 ThreadThreadrun()無無簡單任務 實現 RunnableRunnabler
LeetCode 141: Linked List Cycle - 快慢指針 O(1) 空間檢測環
題目 給定單鏈表頭節點,判斷鏈表中是否存在環。進階:不使用額外空間(O(1) 空間複雜度)。 Floyd 判圈算法(快慢指針) slow 每次走 1 步,f
UVA 729 - The Hamming Distance Problem:next_permutation 生成固定漢明距離二進制串
題目大意 給定 N(位數)和 H(漢明距離,即 1 的個數),輸出所有長度為 N、恰含 H 個 1 的二進制串,按字典序遞增。多組測資間空一行。 範例:N=4,
POJ 2777 Count Color 線段樹區間塗色+位掩碼查詢
問題 長度 L 畫板,T 種顏色。操作: C A B C:區間 [A,B] 塗顏色 C P A B:查詢 [A,B] 出現顏色種數 初始全色 1。L≤10⁵
LeetCode 32: Longest Valid Parentheses - 動態規劃 O(n) 解法詳解
題目重述 給定只含 ( 和 ) 的字符串,找出最長的合法括號子串長度。 例子:(() → () 長度 2;)()()) → ()() 長度 4。 動態規劃狀態
UVA 11123 Counting Trapezoids 容斥原理計數平行四邊形
問題 給定 N 個不重合點,求能形成多少個梯形(至少一組對邊平行)。 幾何轉化 梯形 ⇔ 兩條平行線段(不共線、不等長)。 枚舉所有點對構成直線,記錄:斜率
UVA 10560 Minimum Weight 三進制砝碼最優表示與構造
最優砝碼集 天平兩邊可放砝碼,每個砝碼三種狀態(左/右/不放),對應三進制。最優選擇:1, 3, 9, 27... 即 w_i = 2×sum_{j
UVA 11885 Number of Battlefields 矩陣快速冪計數幾何形狀
問題轉化 給定周長 p,求非矩形的、最小外接矩形周長也為 p 的形狀數。p 為奇數或 <6 答案為 0。 遞推關係 設 f(n) 為合法形狀數,可推導得: f
HDU 1754 I Hate It 線段樹區間最大值單點更新模板
問題 序列長度 N,M 次操作: U a b:位置 a 更新為 b Q a b:查詢區間 [a,b] 最大值 線段樹結構 節點存儲區間最大值 建樹 O(
Codeforces 436C Dungeons and Candies 最小生成樹傳輸優化
問題建模 k 個關卡(n×m 網格),兩種傳輸方式: 全量傳輸:花費 n×m 字節 差分傳輸:對比已傳關卡,花費 w × 不同格子數 求最小總流量及傳輸順序
LeetCode 142 環形鏈表 II 快慢指針數學證明與實現
問題 給定單鏈表,返回環入口節點,無環返回 null。要求 O(1) 空間。 Floyd 判環 + 入口定位 快指針每步 2,慢指針每步 1。設頭到入口距離
C 語言常見陷阱總結 15 大類錯誤與避坑指南
經典陷阱分類 1. 註釋嵌套缺失結束符 a = b; /* bug */ c = d; /* c=d 不執行 */ 2. 誤用賦值代替比較 / 布爾表達式
UVA 10883 Supermean 對數技巧防溢出計算加權平均
問題本質 計算 ∑ C(n-1,i) * a_i / 2^{n-1},n≤10000,直接計算組合數會溢出。 對數轉換 term_i = exp( ln(C(
HDU 4544 消滅兔子 貪心+優先隊列最小花費
問題描述 N 隻兔子血量 Bᵢ,M 支箭傷害 Dⱼ 價格 Pⱼ。每箭限用一次,每兔限射一次,箭傷害 ≥ 兔血量可殺死。求殺光所有兔子最小總價格,不可則輸出 No