NYOJ 972 核桃的數量:最小公倍數(LCM)處理空組
問題描述 三個開發組人數 a,b,c (0≤a,b,c<100)。核桃數需滿足: 1. 各組核桃數相同(前提是組有人)。 2. 組內能平分(整除人數)。 3.
C++ 算法:判斷平衡二叉樹與求二叉樹鏡像(遞歸與優化)
1. 判斷平衡二叉樹 定義:任意節點左右子樹高度差 ≤ 1。 方法一:自頂向下(重複遍歷,O(n²)) right); return abs(ld -
C++ 模板中 typename 關鍵字:解決 vector::iterator 依賴類型編譯錯誤
問題現象 在類模板中定義迭代器成員: template class MyClass { vector::iterator iter; // 編譯錯誤:
BZOJ 2286 SDOI 2011 消耗戰:虛樹 + 樹形 DP + LCA 倍增
問題描述 給一棵有根樹(根 1),邊有權。Q 次查詢,每次給 k 個關鍵點。需刪除一些邊,使根與所有關鍵點斷開,最小化刪除邊權和。Σk ≤ O(n)。 核心思
POJ 2289 Jamie's Contact Groups:二分答案 + 最大流(Dinic)
問題描述 n 個人,m 個組。每人屬於若干組。每人分配到一個組,每組可容納多人。求最小化「最大組人數」(即每組最多人數的最小可能值)。 建模:二分 + 最大流
歸並排序:分治法、合並優化、插入排序混合、自底向上實現全解析
分治思想 將問題分解為子問題,遞歸求解,再合併。歸並排序: 1. 分解:數組對半分。 2. 解決:遞歸排序左右半。 3. 合併:將兩有序半數組合併為整體有序。
C# 委托與 Lambda 表達式:從命名方法到內聯代碼的演進
背景:Java Callable 模式 Java 中用 Callable<T> 傳遞「可重試的代碼塊」: client.getZooKeeper(
C++ 文件操作入門:fstream 讀寫數據完整示例
頭文件與流對象 #include <fstream> 輸出文件流:ofstream(寫),模式 ios::out。 輸入文件流:ifstream(
C++ explicit 關鍵字:禁止構造函數隱式類型轉換
隱式轉換問題 單參數構造函數(或除第一參數外均有默認值)會定義隱式轉換: B void doSomething(B b); }; B obj; obj
POJ 2627 Gopher and Hawks:最短路判斷老鼠能否到達
問題描述 老鼠從洞 1 出發,速度 v,最多在洞外停留 m 分鐘。地面有 n 個洞(坐標)。老鼠能在兩洞間直線跑動,距離 ≤ v * m * 60 米則可到達。
字符串全排列:DFS 遞歸生成字典序排列
問題描述 給定由不同小寫字母組成、已按字典序排序的字符串(長度 1~6),輸出其所有全排列,按字典序升序,每行一個。 算法:DFS + 訪問標記 因輸入已有序
最大公約數:輾轉相除法(歐幾里得算法)求解
問題描述 輸入多組兩個正整數,輸出它們的最大公約數 (GCD)。 算法:歐幾里得算法 核心性質:gcd(a, b) = gcd(b, a % b)。 遞歸/迭
HDU 1695 GCD:容斥原理 + 質因數分解計算互質對數
問題描述 給定 a,b,c,d,k,求滿足 gcd(x,y) = k 的數對 (x,y) 個數,其中 a ≤ x ≤ b, c ≤ y ≤ d。多測試用例。
NYOJ 476 誰是英雄:唯一分解定理求約數個數末位
問題描述 10 個數學家編號 0-9,各寫一整數 aᵢ (1≤aᵢ≤10000)。計算 N = (a₁×a₂×...×a₁₀) 的約數個數。英雄編號 = N 的
HDU 4509 減肥記II:離散化 / 陣列標記計算空閒時間
問題描述 一天 24 小時 = 1440 分鐘。給定 n 個任務,每個有開始/結束時間(HH:MM)。任務可能重疊。求一天中未被任務佔用的總分鐘數(可用於鍛煉)
LeetCode Divide Two Integers:不使用乘除模實現除法(位運算 + 二分)
問題描述 給定兩個 32 位有符號整數 dividend(被除數)和 divisor(除數),不使用乘法、除法、模運算,返回商。溢出返回 INT_MAX (2³
C++ 臨時對象深度解析:產生場景、生命週期與優化策略
什麼是臨時對象? 臨時對象是無名稱的非堆對象,由編譯器隱式創建,通常為 const。區別於局部變量:代碼中可見名稱的變量皆非臨時對象。 三大產生場景 1. 類
POJ 3254 Corn Fields:狀壓 DP + 滾動數組計數放牛方案
問題描述 N 行 M 列草地(N≤12, M≤12),部分格子不能放牛(輸入 0)。每行牛不能相鄰,相鄰行牛也不能垂直相鄰。求合法放置方案數模 10⁸。 狀壓