Linux 多線程同步機制詳解(一):信號量實現生產者消費者模型
線程同步兩大原語 信號量:計數器,適用於資源計數、生產者-消費者、線程協作 互斥量:二值鎖,適用於臨界區互斥訪問 信號量核心 API 函數作用 sem_
ZOJ 1107 FatMouse and Cheese:記憶化搜索解決網格最大路徑和
問題描述 n × n 網格,每格有整數值。老鼠從 (0,0) 出發,每步可向上下左右四個方向移動 1 到 k 步,且目標格數值必須嚴格大於當前格。求路徑上數值之
C++ 陷阱:delete 了卻不調用析構函數?缺少類定義導致的未定義行為
現象重現 代碼結構: CTestA:含建構/析構函數,析構輸出日誌 CTestApp:持有 CTestA*,析構時 delete pTestA main:建立
Effective C++ 條款 1-2:以 const/inline 替代 #define、以 iostream 替代 stdio.h
條款 1:盡量以 const、enum、inline 替換 #define 核心原則:寧用編譯器,勿用預處理器 #define 是文本替換,符號不進入編譯器符
HDU 1496 多元二次方程求解:雙重枚舉與哈希優化 O(n²) 解法
問題描述 給定係數 a, b, c, d,變量 x₁, x₂, x₃, x₄ ∈ [-100, 100] 且 ≠ 0。求滿足 a·x₁² + b·x₂² + c
POJ 2785 四數組求和為零:雙指針與哈希兩種 O(n²log n) 解法詳解
問題描述 給定四個長度為 n (≤ 4000) 的整數陣列 A, B, C, D,元素絕對值 ≤ 2²⁸。求四元組 (a,b,c,d) ∈ A×B×C×D 使得
七大經典排序算法深度解析:原理、實現與複雜度對比
前言 排序算法是電腦科學基石。本文系統梳理冒泡、插入、希爾、選擇、堆、歸並、快速七大經典排序,涵蓋算法步驟、C 語言實現、時空複雜度、穩定性分析,附帶完整可運行
暴力求解藝術:四大經典枚舉優化案例深度解析
核心思想:化繁為簡的枚舉策略 暴力枚舉並非盲舉窮舉,關鍵在於縮減搜索空間與利用數學性質剪枝。本文通過四個經典題目,展示如何將指數級複雜度降至多項式甚至線性級。
持續整合實戰:資料存取層單元測試與 DBUnit 數據管理
前言 在持續整合流程中,資料存取層的單元測試一直是維護成本最高的環節。本文記錄如何引入 DBUnit 與 Spring Test DBUnit,透過 XML 數
多項式運算實作:鏈結串列實現多項式加法與乘法
前言 多項式運算是電腦科學與數值分析中的基礎課題。本文透過 C 語言與鏈結串列結構,完整實現多項式的輸入、加法、乘法、排序、合併同次項與輸出功能,適合資料結構教
HDU 1847:博弈論基礎——SG 函數與規律發現
問題描述 有 n 張牌,雙方輪流取,每次可取 2 的冪次張(1,2,4,8...)。取完者勝。Kiki 先手,雙方最優策略,問誰贏? 方法一:找規律(必勝/必
POJ 1845 Sumdiv:A^B 的因數和與等比數列分治求和
問題描述 給定 A, B(A, B ≤ 10⁹),求 A^B 的所有正因數之和模 9901。 數學轉化 分解 A = ∏ p_i^{e_i},則 A^B =
POJ 2773 Happy 2006:歐拉函數與第 k 個互質數
問題描述 給定 n, k(n ≤ 10⁶, k ≤ 10⁹),求第 k 個與 n 互質的正整數。即找到第 k 個滿足 gcd(x, n) = 1 的 x。 數
HDU 2126 Buy the souvenirs:求方案數的二維費用背包
問題描述 有 n 件紀念品,每件有價格。旅客有 m 元錢。 第一問:最多能買多少件?(貪心:按價格升序買,直到錢不夠) 第二問:在買到最大件數的前提下,共有多少
HDU 1452 Happy 2004:因數和與模逆元、快速冪、積性函數
問題描述 計算 S = σ(2004^x)(2004^x 的所有正因數之和)模 29 的結果。多組輸入,x=0 結束。 數學基礎 因數和函數 σ(n):若
Find the Minimum:線段樹區間加與區間最小值(環狀數組)
問題描述 給定長度 N 的整數數組,支持兩種操作(M ≤ 100,000): Add(L, R, W):區間 [L, R] 每個元素加 W(W 可為負)。 M
Codeforces 327C Magic Five:等比數列求和與快速冪取模
問題背景 給定一個由數字組成的字符串 s(長度 ≤ 10⁵),重複 k 次構成長字符串。求其中所有「魔法子串」(即子串表示的數字能被 5 整除)的數量模 1e9