UVa 11609 團隊計數:快速冪取模 1e9+7
問題重述 有 x 個人,任選非空子集組成小隊,再從小隊中選隊長。求方案數模 1,000,000,007。答案為 x * 2^(x-1) mod MOD。 數學
HDU 1241 Oil Deposits:八方向 DFS 求連通分量
問題描述 給定 m×n 網格(m,n ≤ 100),@ 表示油點,* 為空地。八方向(水平、垂直、對角線)相鄰的 @ 屬於同一油田。求油田數量。 DFS 模板
UVa 725 Division 另解:枚舉被除數 + 位掩碼優化
解題核心 同 UVa 725,枚舉被除數 fghij,計算分子 abcde = N × fghij。使用位掩碼(int mask = 0)替代布爾數組,按位或標
HDU 1799 組合數遞推:模 1007 的 C(n,m) 計算
問題轉化 m 層嵌套循環,變量嚴格遞增,初始值 1,終值 n。操作次數即為從 n 個元素中選 m 個的組合數 C(n,m)。求 C(n,m) mod 1007。
C++ 重載 new/delete 深度解析:全局、類專屬與數組版本
為什麼要重載 new/delete? 性能優化:頻繁創建/銷毀特定類對象時,默認分配器可能成為瓶頸; 內存碎片控制:固定大小分配器可避免堆碎片; 診斷追蹤:記
HDU 2524 矩形計數:數學公式 O(1) 解法
問題描述 給定 n × m 的網格(n,m < 100),求網格中矩形總數。矩形邊平行於網格線,包含正方形。 數學推導 在 n+1 條水平線中任選 2
UVa 725 Division:五位數除法暴力枚舉解法
題目重述 給定整數 N (2 ≤ N ≤ 79),找出所有滿足 abcde / fghij = N 的 5 位數對(允許前導零),其中 a~j 恰好為 0~9
UVa 129 Krypton Factor:困難串的 DFS 回溯求解
問題描述 給定長度 L 和序號 N,從字母表 {A, B, ...} 前 L 個字母中構造一個「困難串」:該串的任意相鄰兩個子串不相等。求第 N 個符合條件的串
Linux C++ 循環緩衝區模板類實現詳解
前言 在實際開發中,頻繁讀寫大量數據是常見場景。此時若採用普通隊列,頻繁的內存分配與釋放會嚴重拖慢性能。循環緩衝區憑藉其固定內存、免鎖(單生產者單消費者)等優勢
C++ 數據共享與保護筆記:作用域、生存期、靜態成員、友元、const 全面解析
C++ 數據共享與保護核心知識體系整理 本文系統梳理 C++ 中實現數據共享與保護的核心機制:作用域規則、對象生存期、類的靜態成員、友元機制、const 語義、
C 語言可變參數列表完整指南:stdarg.h 機制與實作細節
前言 C 語言支援可變參數函數(如 printf),<stdarg.h> 提供標準化介面。本文詳細解析 va_list、va_start、va_ar
貨幣體系(Codeforces 124A / Geraldion Currency):最小不幸數判定邏輯
貨幣體系:最小無法湊出的金額——核心邏輯與證明 給定 n (≤ 1000) 種面值互不相同的鈔票(1 ≤ a_i ≤ 10^6),每種可用無限張。若存在無法湊出
C++ 動態物件建立完整指南:new/delete、陣列、記憶體耗盡處理與自訂分配器
物件建立的兩個階段 記憶體分配:從靜態區、堆疊或堆獲取原始記憶體。 建構函數呼叫:初始化該記憶體為有效物件。 三種記憶體分配策略 區域特點適用場景
POJ 3468 區間加值與區間求和:線段樹 Lazy Propagation 模板詳解
題目大意 維護長度 N ≤ 100,000 的數列,支援兩種操作(Q ≤ 100,000): C a b c:區間 [a,b] 每個元素加 c(|c| ≤ 1
POJ 1274 最大匹配:匈牙利算法(DFS 版)模板解析
題目大意 二分圖最大匹配模板題。輸入左部節點數 n、右部節點數 m(題目中隱含),及每個左部節點的邊列表。求最大匹配數。 匈牙利算法核心思想 對每個左部節點
C++ 頭文件相互包含問題解決方案:前置宣告與介面隔離
問題場景 兩個類別互相依賴:Screen 需要將 Window_mgr::clear 設為友元,Window_mgr 包含 vector 成員。直接互相 #in