HDU 1157 Who's in the Middle:中位數查找的排序與線性選擇對比
問題重述 給定奇數 N (1 ≤ N < 10,000) 筆產奶量,求中位數 (排序後第 (N+1)/2 小)。 解法一:排序法 (最簡單) sort(a,
POJ 2251 Dungeon Master:三維迷宮 BFS 最短路徑解法
問題重述 三維地牢大小 L×R×C (≤30)。字元:# 岩石、. 空地、S 起點、E 終點。六個方向移動 (上下左右前後),每步 1 分鐘。求最短逃脫時間或輸
GCC 實戰教學:從單檔編譯到靜態庫建構與多目錄專案管理
第一階段:單檔編譯基礎 # 編譯 + 連結一步到位,產生 a.out gcc hello.c # 指定輸出檔名 gcc hello.c -o run #
POJ 2442 Sequence:多序列最小和選擇的 O(m n log n) 解法
問題重述 給定 m 個序列,每個長度 n。從每個序列取一個數形成長度 m 的新序列,共有 n^m 種組合。求所有組合和中最小的 n 個,升序輸出。 限制:m ≤
POJ 1002「487-3279」STL map 解法與三大陷阱深度剖析
問題重述 輸入電話號碼字串 (含數字、大寫字母、連字號),依電話鍵盤映射 (ABC→2, DEF→3, ..., WXY→9) 轉為 7 位數字,忽略連字號。統
C++ STL 容器對決:vector vs list 深度比較與選型指南
核心差異一覽 特性vectorlist 底層結構動態陣列 (連續記憶體)雙向鏈結串列 (離散節點) 隨機存取O(1) operator[]O(n) 僅支援雙向
資料結構筆記 (一):線性表 ADT 與 C 語言雙重實作 (順序/鏈式)
第一章 綜論 資料結構研究什麼? 將現實複雜問題 (非數值) 抽象為 邏輯結構 (集合、線性、樹狀、圖狀) 與 儲存結構 (順序、鏈式、索引、雜湊),並定義對
C++ 引用作為函數返回值:規則、陷阱與最佳實踐
引用作為函數參數回顧 引用參數主要兩大目的: 在函數內修改實參 (如 swap) 避免拷貝大型物件,提升效率 (如 const string&) 引用返回
Codeforces 265B「Roadside Trees (Simplified)」:貪心策略與數學推導
問題重述 西向東有 n 棵樹,第 i 棵高度 h[i],樹頂有果實。Liss 從第 1 棵樹高度 1 開始。每秒可執行: 上下移動 1 單位高度 吃掉當前樹頂
Codeforces 264A「Escape from Stones」:雙端佇列模擬與 O(n) 線性解法
問題重述 松鼠 Liss 初始佔據區間 [0, 1]。依序有 n 顆石頭落下,第 i 顆石頭落在當前區間中心 k。Liss 必須逃向左或右: 逃左 → 新區間
AMPS 雙向鏈結串列原始碼深度解析:從 API 設計到核心實作
概述 AMPS (Advanced Multi-Protocol System) 中的雙向鏈結串列是哈希表、定時器、記憶體管理等核心模組的基礎資料結構。其設計延
位元優化版埃拉托斯特尼篩法:以 n/16 記憶體篩選億級質數
核心思路 經典埃拉托斯特尼篩法需 O(n) 空間。觀察到: 只需標記「是否為合數」,一個 bit 即可 → 空間壓縮 8 倍。 除 2 外偶數皆非質數 → 僅
C++ 競程實戰技巧與 STL 容器深度解析
前言 算法課程告一段落,雖然未來或許不會頻繁使用 C++,但這段時間累積的實戰經驗值得整理留存。本文彙整了競程中常用的 C++ 技巧、STL 容器特性對比以及輸
3D 旋轉矩陣數學推導與 C++ 實現:替代 DirectX D3DXMatrixRotationAxis
前言 3D 圖形編程中,旋轉矩陣是核心變換。DirectX 提供 `D3DXMatrixRotationAxis`,但理解其數學本質並能手寫實現,對於移植、教學
AMPS 單向鏈表源碼深度解讀:通用容器設計與回調機制
前言 單向鏈表是基礎數據結構,在大型軟件中廣泛應用。AMPS(某通信中間件)提供了一套功能豐富、基於回調的單向鏈表操作庫,支持異構節點、用戶自定義比較/複製/釋
十進制整數轉二進制字符串:遞歸實現與邊界條件完善
核心算法:除 2 取餘 + 逆序 將十進制整數 v 反復除以 2,記錄餘數(0 或 1),商繼續除,直到商為 0。餘數序列逆序即為二進制表示。例如 5: 5
HDU 1283 最簡單的計算機:模擬寄存器與指令集的狀態機實現
題目大意 模擬一台簡易計算機 PpMm:兩個內存 M1, M2,三個寄存器 R1, R2, R3(初始 0)。六條指令: 指令操作 AR1 = M1 BR2
HDU 1235 統計同成績學生人數:輸入處理與計數器的基礎練習
題目大意 多組測試數據。每組:第一行 N(學生數,≤1000),第二行 N 個分數(0~100),第三行查詢分數 score。N=0 結束。輸出該分數出現的次數