UVA 1330 City Game:最大全 F 子矩陣——懸線法與單調棧
題目轉化 M×N 網格,F 為空地,R 為障礙。求最大全 F 子矩陣面積,輸出面積×3 (租金)。M,N ≤ 1000。 方法一:懸線法 (O(MN)) 對每
HDU 1406 完數:篩法預計算因子和
題目 完數定義:大於 1 的正整數,其所有真因子之和等於自身。如 6=1+2+3,28=1+2+4+7+14。給定區間 [a, b],求區間內完數個數。多測試用
POJ 1423 Big Number:階乘位數的兩種高效計算法
題目 給定整數 m (1 ≤ m ≤ 10^7),求 m! 的十進制位數。多測試用例,首行給出測試數 n。 數學基礎 log10(m!) = log10(1)
POJ 3694 Network:橋、縮點、LCA 動態維護橋的數量
題目大意 給定無向連通圖 (含重邊),初始求出所有橋。隨後動態新增 Q 條邊,每次新增後輸出當前圖中橋的數量。N, M, Q ≤ 10^5。 核心思路 找橋
UVa 11235 Frequent Values:區間眾數與 RMQ/線段樹
題目背景 給定一個非遞減序列,多次查詢區間 [l, r] 内出現次數最多的數值的頻率。序列長度 n ≤ 10^5,查詢數 m ≤ 10^5。 核心觀察 因序列
LeetCode 128. Longest Consecutive Sequence:O(n) 雜湊集合解法
題目 給定未排序整數陣列,找出最長連續數字序列的長度。要求時間複雜度 O(n)。 範例:[100, 4, 200, 1, 3, 2] → 最長序列 [1,2,3
LeetCode 36. Valid Sudoku:數獨驗證的三維檢查法
題目大意 給定一個 9×9 的數獨棋盤(部分格子為 . 表示空白),判斷其目前狀態是否合法。合法條件: 每一行數字 1-9 不重複; 每一列數字 1-9 不重
以鏈表實現責任鏈模式:解決 C/C++ 中過多 if-else 的困境
前言 在處理複雜業務邏輯時,開發者常陷入「if-else 地獄」。每當新增一條判斷規則,就得在原本冗長的條件鏈尾部追加代碼,不僅難以維護,更違背開閉原則。本文將
UVA 10391 Compound Words:二分查找復合詞
題目大意 給定按字典序排序的單詞表(≤120,000 個),找出所有由表中恰好兩個其他單詞拼接而成的復合詞,按字典序輸出。 解法:排序 + 二分查找 讀入所有
CF 389B Fox and Cross:貪心構造十字架
題目大意 給定 n×n 網格(3≤n≤100),# 表示格子。判斷能否用若干個「十字架」(中心加上下左右四格)完全覆蓋所有 #,且十字架不重疊。 貪心策略 掃
HDU 1713 相遇周期:分數 GCD 與 LCM 應用
題目大意 兩人從同一起點出發,速度分別為 a/b 和 c/d(分數形式)。求他們再次相遇所需時間(以最簡分數或整數輸出)。 數學模型 相遇時間 t 滿足:t
C++ 回顧:前向聲明、嵌套類、局部類
前向聲明 用於解決類間相互引用導致的編譯依賴循環。 語法:class A;(在 B 中聲明)。 限制:前向聲明的類為不完全類型,只能定義指針或引用成員,不能定義
POJ 2342 Anniversary party:樹形 DP 最大權獨立集
題目大意 樹形層級結構,每個節點有權值(快樂度)。選擇一組節點參加派對,限制:父子節點不能同時選。求最大權值和。N ≤ 6000。 樹形 DP dp[u][0
1381 Balancing the Scale:技巧枚舉 + 位運算優化
題目大意 給定 16 個互不相同的數(1~1024),放入天平兩側各 8 個位置,滿足加權和相等: 左:x1*4 + x2*3 + x3*2 + x4 = 右:
POJ 1849 Two:樹的直徑與樹形 DP 兩種解法
題目大意 N 個路口,N-1 條街道構成樹。兩輛掃雪車從節點 S 出發,需清掃所有街道(邊),每米消耗 1 升油。車可停在任意節點,無需返回。求最小總油耗。
C++ 回顧:類數據成員初始化與構造函數初始化列表
構造函數兩個階段 初始化階段:在初始化列表中進行,數據成員在此被構造。 普通計算階段:進入函數體後,對數據成員的賦值操作。 初始化列表效率更高,避免默認構造