算法練習:進制轉換基礎(二進制轉十進制)
二進制轉十進制原理 二進制數 b_{k-1} b_{k-2} ... b_0 對應十進制值: Σ_{i=0}^{k-1} b_i * 2^i。 例如 110 =
C++ 讀入二進制數轉十進制輸出:利用 bitset 類模板
問題描述 輸入一個長度 ≤ 10 的二進制字符串(僅含 0/1),輸出其十進制值。 解法:std::bitset bitset 固定大小位集合,支持從流讀取二
算法導論動態規劃經典:鋼條切割問題完整解析與代碼實現
問題描述 鋼條長度 n,價格表 p[i](長度 i 的售價)。切割無成本。求最大收益 r_n 及切割方案。 遞歸關系 r_n = max_{1≤i≤n} (p
C++ 多線程編程入門:Win32 API CreateThread 與互斥體同步
創建線程 CreateThread HANDLE hThread = CreateThread( NULL, 0, ThreadFunc, NULL,
HDU 4965 解題報告:矩陣快速冪優化(降維打擊)
問題描述 給定 N×K 矩陣 A 和 K×N 矩陣 B(元素 0~5)。計算 C = A×B(N×N),再求 M = C^{N^2},每個元素模 6,最後求所有
HDU 5187 解題報告:排列計數問題(組合數學 + 快速冪)
問題描述 1~n 的排列中,存在分割點 i,使得前綴 a1..ai 單調(遞增或遞減),後綴 ai..an 也單調。求滿足條件的排列數模 p。 解題思路:組合
HDU 4193 解題報告:單調隊列解環形數組前綴和非負判斷
問題描述 給定長度 n 的環形數組,求有多少個起始位置,使得從該位置開始的所有前綴和均 ≥ 0。 解題思路:前綴和 + 單調隊列滑動窗口最小值 將數組複製一
HDU 1007 / 7.1.7 Wall 解題報告:凸包周長(Graham Scan)
問題描述 給定 N 個點(城堡頂點),求包含所有點且距離點集至少 L 的最短圍牆長度。即凸包周長 + 圓周 2πL(外側平移 L 後的圓角)。 解題思路:Gr
C++ 隨機數生成詳解:srand/rand 及區間擴展技巧
基礎用法 rand() 產生 [0, RAND_MAX] 偽隨機數(RAND_MAX ≥ 32767)。srand(seed) 設置種子,通常用 time(NU
HDU 5188 解題報告:帶時間限制的 01 背包(排序 + DP)
問題描述 n (≤30) 道題,第 i 題耗時 t_i、得分 v_i、最早可提交時間 l_i(在此之前提交視為作弊)。需總分 ≥ w,求最小總耗時,或輸出 zh
HDU 4549 M斐波那契數列 解題報告:矩陣快速冪 + 歐拉定理降指數
問題描述 M-斐波那契數列:1)。求 F[n] mod 1,000,000,007。a,b,n ≤ 10^9。 解題思路:指數轉化為 Fibonacci 數
ZOJ 2107 / HDU 1007 Quoit Design 解題報告:分治法求最近點對
問題描述 給定平面上 n (≤ 10^5) 個點,求最近點對距離除以 2(即最小圓半徑)。經典最近點對問題。 解題思路:分治算法 O(n log n) 按
BZOJ 3112 ZJOI2013 防守戰線 解題報告:雙單純形法
問題描述 給定 m 個目標、n 種武器。武器 i 有成本 z_i,可攻擊區間 [x_i, y_i]。每個目標需至少 1 單位傷害。最小化總成本。這是覆蓋型線性規
HLJOJ 1171 大素數判定 解題報告:預篩平方根內素數再試除
問題描述 多組測試,每組一個 n (0 < n < 10^9),判斷是否為素數,輸出 YES/NO。 解題思路:預篩 + 試除 對於 n < 10^9,直接試
BZOJ 3265 志願者招募加強版 解題報告:單純形法求解線性規劃
問題描述 給定 n 個項目、m 個志願者。每個志願者有費用、可工作的時間區間。需滿足每個時間點的需求人數,最小化總費用。這是一個線性規劃問題,可用單純形法求解。
NYOJ 296 Candy Splitting 解題報告:異或性質與貪心
問題描述 將一組糖果分成兩堆,要求兩堆糖果價值的異或和相等。若可能,輸出較大堆的總和(最大化);否則輸出 NO。 解題思路:異或性質 設兩堆異或和分別為 X,
POJ 2104 K-th Number 解題報告:主席樹(可持久化線段樹)靜態區間第 K 大
問題描述 給定長度 n 序列,q 次詢問 [l, r] k,求區間內第 k 小的數(n ≤ 10^5, q ≤ 10^5)。 解題思路:主席樹(可持久化線段樹