ZOJ 1610 Count the Colors:線段樹區間染色統計
問題描述 在 [0, 8000] 區間上進行多次區間染色操作,每次指定區間 [a, b] 染為顏色 c。最終統計每種顏色形成的連續區段數量。注意:相鄰同色區間若
HDU 5335 Walk Out:BFS 求字典序最小的最短路徑
問題描述 給定 n × m 的 0/1 矩陣地圖,從 (1,1) 走到 (n,m),只能上下左右移動。路徑上的數字組成二進制串(忽略前導 0),求字典序最小的路
C++ 運算符重載完全指南:規則、最佳實踐與代碼範例
運算符重載核心規則 運算符重載本質上是函數重載,必須遵循以下基本原則: 至少一個參數為用戶定義類型(類/結構體/枚舉) 不能改變運算符的優先級、結合性、操作數
八大經典排序算法 C++ 模板實現全解析
排序算法綜述 本文提供八種常用排序算法的 C++ 泛型實現,涵蓋從基礎的 O(n²) 算法到高效的 O(n log n) 算法,以及非比較排序的基數排序。所有算
POJ 1364 King:差分約束系統求解詳解
問題背景與理解 這是一道經典的差分約束問題。故事講述一位能力有限的國王只能對整數序列的連續子序列求和並與給定整數比較大小。給定一系列形如 as + as+1 +
C++ 對象模型:Copy Constructor 建構操作詳解 (第二章)
三種觸發複製構造的場景 顯式初始化:X xx = x; 函數參數傳值:void foo(X x); foo(xx); 函數返回值:X foo() { X xx
HDU 5338 ZZX 與排列:線段樹解法詳解
問題背景 ZZX 喜歡排列,並知道任何排列都可以分解為不相交的循環。例如排列 145632 可以分解為 (1)(35)(462)。移除所有括號後,分解序列可能是
POJ 1077 八數碼:BFS + 康托展開求最短移動序列
問題描述 3×3 八數碼問題:初始狀態到目標狀態 123456780(0 代表空格)。每步移動空格與相鄰數字交換。求最短移動序列(輸出操作字符 u/d/l/r)
C++ 头文件互相包含問題:前置聲明解決循環依賴
問題場景 兩個類互相引用:Screen 需要將 Window_mgr::clear 聲明為友元,Window_mgr 包含 vector 成員。若在頭文件中直接
POJ 1274:最大二分匹配 (匈牙利算法 DFS 版)
問題描述 給定二分圖左側 n (≤200) 點,右側 m 點(隱含於邊中)。每行給出左側點連接的右側點列表。求最大匹配數。多測試案例,EOF 結束。 匈牙利算
POJ 3468:區間加、區間和 (線段樹 Lazy Propagation)
問題描述 N, Q ≤ 100000。序列初始值 A_i。兩操作: C a b c:區間 [a,b] 每元素加 c。 Q a b:查詢區間 [a,b] 和。 輸
HDU 1394 Minimum Inversion Number:樹狀數組求循環移位最小逆序數
問題描述 給定 0..n-1 的一個排列(n ≤ 5000)。可將前 m 個元素移至末尾(m=0..n-1),共 n 種循環移位。求這 n 個序列中的最小逆序數
HDU 3853:向下向右找出口 (期望 DP)
問題描述 n×m 網格,從 (1,1) 走到 (n,n)(題目實為 (n,m))。每步可向右、向下、或不動,概率分別為 p2, p3, p1(p1+p2+p3=
HDU 1209 Clock:時鐘夾角中位數 (排序)
問題描述 給定 5 個不同時刻(格式 hh:mm,24 小時制),計算時針與分針夾角(取較小角,0°~180°)。按夾角升序排序,夾角相同時刻早者在前。輸出第
HDU 2037:今年暑假不 AC (貪心區間調度)
問題描述 經典活動安排問題:給定 n 個活動,各有開始/結束時間。選最大兼容子集(不重疊)。多測試案例,n=0 結束。 貪心策略:按結束時間升序 證明:最早結
BestCoder Round #49 1001:模運算最小選數 (DFS 枚舉子集)
問題描述 給定整數 a 和 n (≤20) 個整數 b_i。從中選若干數重新排序為 c_1..c_r,使 a % c_1 % c_2 ... % c_r = 0
SHU OJ 1936:二維最長遞增子序列 (排序 + LIS)
問題描述 給定兩個長度 N (≤100000) 的數組 A, B。求最長下標序列 D,滿足:A[D[i]] < A[D[i+1]] 且 B[D[i+1]]。即
NY OJ 17:最長遞增子序列長度 (O(n²) DP)
問題描述 給定 n (≤20) 個字符串,每串長度 ≤10000。求每個字符串的最長嚴格遞增子序列(按字符 ASCII 碼比較)長度。輸入字符串可能包含任意可見