HDU 1009 分糖果:分數背包貪心算法經典實現
問題描述 有 m 種糖果,第 i 種共 x_i 公斤,總價 y_i 元。背包容量 n 公斤,可任意分割糖果。求最大總價值。多測試用例,n=m=-1 結束。 貪
HDU 4545 字符串變換匹配:貪心雙指針與字符映射表
問題描述 給定源字符串 s1、目標字符串 s2 及 n 個字符變換規則 (c1, c2) 表示 c1 可變為 c2。判斷是否能從 s2 中刪除部分字符(保持相對
UVa 10891 Game of Sum:區間博弈 DP 與前綴和優化
問題描述 給定長度 n (≤ 100) 的整數序列。兩名玩家輪流操作:每次可從序列左端或右端連續取走任意個數(≥1)的元素,獲得其和作為得分。取走的元素從序列中
Windows 網絡編程 Winsock 入門:TCP/UDP 完整示例與 API 詳解
Winsock 開發模式 阻塞/同步模式:調用發送/接收函數時線程掛起,直到操作完成。邏輯簡單,但高併發需多線程。 非阻塞/異步模式:結合 Windo
HDU 1241 Oil Deposits:八方向連通分量 DFS 計數
問題描述 給定 m×n 網格(m,n ≤ 100),每格為 *(空地)或 @(油田)。八個方向(上下左右+四條對角線)相連的 @ 屬於同一油田。求油田總數。多測
HDU 1018 階乘位數:對數累加與斯特靈公式雙解法
問題描述 給定 n (1 ≤ n ≤ 10^7),求 n! 的十進制位數。多測試用例,輸入以 0 結束。 方法一:對數累加(精確、O(n)) 利用 log10
HDU 4445 Crazy Tank 題解:幾何與枚舉的巧妙結合
題目大意 有一高度為 h 的發射塔,向水平面發射炮彈。炮彈初速度大小為 v0,發射角可調。地面上有敵方區間 [l1, r1] 和友方區間 [l2, r2]。求:
NBU 2414 請幫助可憐的驢!:01 背包變體求最小移動次數
問題重述 驢子左側有 n 件、右側有 m 件商品,每件有重量。允許將商品在左右兩側移動,目標是使兩側重量差絕對值最小;在達到最小差值的前提下,求最少移動件數。約
HDU 4450 Draw Something:平方和累加的簡單模擬題
題目大意 給定多組測試數據,每組先輸入一個整數 n,隨後輸入 n 個整數 ai。要求計算這 n 個數的平方和並輸出。當 n=0 時輸入結束。 算法邏輯 直接模
C/C++ 指針與 const 限定符深度解析:const int* p vs int* const p
核心口訣:以 * 為分界,看 const 修飾誰 將聲明按 * 分為左右兩部分: const 在 * 左側(const int* p 或 int cons
堆構建與堆排序:Max-Heapify 核心操作的 C++ 封裝實現
堆的基本概念 堆是一種完全二叉樹,滿足堆序性質: 大根堆:每個節點的值 ≥ 其子節點值,根節點為最大值。 小根堆:每個節點的值 ≤ 其子節點值,根節點
快速排序核心實現:分治法與 Partition 算法深度解析
算法核心思想 快速排序是典型的分治法算法。其基本流程包含三步: 基準選取:從待排序區間中選一個元素作為 pivot(本文採用區間最後一個元素)。 分割
HDU 2845 Beans:矩陣採豆遊戲的動態規劃解法詳解
問題背景 在 HDU 2845「Beans」這道經典題目中,我們面對一個 M×N 的矩陣,每個格子裡有一顆品質值不同的豆子。玩家需要決定吃哪些豆子以獲得最大總品
HDU 4557 非誠勿擾:Treap 平衡樹維護人才庫 O(log n) 增刪查
問題描述 維護一個動態集合,支持兩操作: Add name ability:插入學生(姓名唯一,能力值 1~20)。輸出當前總人數。 Find minAbil
iOS Objective-C respondsToSelector:動態判斷方法是否實現
基本用法 if ([self respondsToSelector:@selector(request)]) { NSLog(@request 方法存在
二叉樹中和為指定值的所有路徑:DFS 回溯 + 路徑記錄完整解法
問題描述 給定二叉樹根節點和目標值 sum,找出所有從根到葉節點路徑上節點值之和等于 sum 的路徑。路徑定義為根到葉的簡單路徑。 算法思路:遞歸 DFS +
C++ 封裝 Boost.Asio UDP 發送器:線程安全隊列 + 異步發送完整實現
設計目標 主線程生產字符串,發送線程消費發送。 基於 Boost.Asio 實現跨平台 UDP 發送。 線程安全隊列,無鎖或輕量鎖。 RAII 管理資源,異常