ZOJ 1081 Points Within:改進弧長法(象限掃描法)判斷點與多邊形關係
問題背景 判斷點是否在簡單多邊形內部、邊界或外部,傳統「轉角法」(累加向量夾角)雖然直觀,但浮點誤差大、邊界情況處理繁瑣。ZOJ 1081 引入一種 改進弧長法
POJ 1265 Area:多邊形面積、邊界格點與 Pick 定理綜合應用
題目概述 POJ 1265 Area 是一道經典的計算幾何與數論結合題目。給定一個頂點均在整數格點上的簡單多邊形,要求計算多邊形內部的整數格點個數。解題核心在於
POJ 1584 A Round Peg in a Ground Hole:凸多邊形判定與圓內切綜合幾何模板
題目大意 給定 n 個點(n≥3)、圓半徑 R、圓心 (Px,Py)。判斷: 1. 點序是否構成**凸多邊形**(否則 HOLE IS ILL-FORMED)
C/C++ 跨平台固定寬度整數類型:問題背景 C/C++ 標準僅保證 `short ≤ int ≤ long` 等相對大小,具體位寬依賴編譯器/CPU/OS。跨平台代碼需精確控制位寬(如網絡協議、
C# struct 與 class 靜態構造函數觸發時機差異深度解析
現象觀察 `class` 靜態構造函數(`.cctor`)在**首次訪問類型任何靜態/實例成員前**觸發。 `struct` 靜態構造函數觸發規則不同: ✅
Boost 實用工具類入門:tuple、static_assert、pool、random、program_options
Boost Tuple:多返回值的現代解法 替代 `pair` 嵌套或自定義結構體,支持任意數量、異構類型元素。 #include #include //
Clang 編譯器實戰遷移指南:嚴格標準合規與 C++11 支持現狀
遷移動機 項目需跨平台至 macOS,Xcode 默認編譯器為 Clang。嘗試用 Clang 替代 MSVC (cl.exe) 編譯現有 C++ 代碼庫。
Windows 多線程同步:互斥量保護共享資源售票示例
場景 兩線程並發售賣 100 張票,需保證線程安全(無重賣、無超賣)。使用 **Mutex(互斥量)** 同步。 關鍵 API `CreateMutex(N
UVA 10801 Lift Hopping:電梯換乘最短路的 Dijkstra 實現
問題建模 N 條電梯(N ≤ 5),每條有速度 `T[i]`(層間時間),停靠樓層集合。換乘固定耗時 60 秒。從 0 樓出發,求到達目標樓層 T 的最短時間。
POJ 3130 多邊形核判定:半平面交模板應用
問題大意 給定簡單多邊形(不一定凸),判斷其**核**(能看到整個多邊形的點集)是否非空。即求所有內角半平面的交是否為空。 算法流程 讀入頂點序列(逆時針或
POJ 3525 Most Distant Point from the Sea:半平面交 + 二分求凸多邊形內切圓
問題轉化 給定凸多邊形(海島),求內部點到邊界的最大距離。等價於求**最大內切圓半徑**。 解法框架 對半徑 `r` 二分(0 ~ 10000) 將每條邊向
Objective-C NSMutableString 可變字符串完整操作指南
核心概念 `NSString` 不可變,`NSMutableString` 繼承自 `NSString`,支持**原地修改**內容與長度。所有 `NSStrin
HDU 2854 Beans:二維 0/1 背包逐行再逐列優化
題目大意 R 行 C 列網格,每格有豆子數。規則:同行不可相鄰取,同列不可相鄰取。求最大豆子總數。 即先對每行做 1D 0/1 背包(不可相鄰),得到每行最大值
命令模式 C++ 實現:行為封裝與解耦經典範例
模式結構 `CommandBase`:抽象命令接口,純虛函數 `run()` `Command1/2/3`:具體命令,攜帶執行所需參數(如字符串) `Invo
HDOJ 2571 命運:記憶化 DFS 解決網格最大路徑和
題目大意 n×m 網格,每格有值。從 (1,1) 走到 (n,m),允許移動: 下 (i+1,j)、右 (i,j+1)、跳躍 (i, k*j) (k≥2)。求最
C++ 包含關系(組合)三種形式:值、指針、引用成員詳解
三種包含方式 類 `Student` 包含 `Person`: 1. 值成員(對象語義,生命週期綁定) class Student { Person