OJ 競程輸入輸出完全指南:四大讀入模式模板
前言 OJ 題目輸入格式多變,掌握標準讀入模板是 AC 的基礎。本文總結四類最常見模式,提供 C/C++ 雙版本代碼。 模式一:未知組數,讀到 EOF 典型題
Effective C++ 條款 11-17:構造、析構、賦值運算符核心準則
條款 11:動態分配內存的類必須聲明拷貝構造函數與賦值運算符 編譯器默認生成的拷貝/賦值為**淺拷貝**(逐位複製指針),導致雙重釋放、內存洩漏、懸空指針。必須
HDOJ 2546 飯卡:0/1 背包變形的貪心與 DP 結合
題目大意 有 n 道菜(價格 aᵢ),飯卡餘額 M。規定**最貴的菜必須最後買**,且購買時餘額必須 ≥ 5。求最大花費(或最小剩餘)。 關鍵轉化 找出最貴
POJ 1125 Stockbroker Grapevine:Floyd-Warshall 尋找圖中心
問題建模 有向圖,N 個經紀人(N ≤ 100),邊權為傳遞時間。求一個起點,使得「最遠節點的最短路距離」最小。即尋找圖的**中心點**(最小化最大最短路)。若
HDU 2094 產生冠軍:圖論與拓撲思維的巧妙應用
題目重述 n 場比賽結果(A 勝 B),規則:C(無直接比賽時)A ⇒ 三人都不可能是冠軍 判斷是否已產生唯一冠軍(只有一人未輸過任何人)。 核心洞察 冠軍定
POJ 1185 炮兵陣地:狀態壓縮 DP 經典詳解
問題建模 n×m 棋盤(m ≤ 10),部分格子不可放炮(H)。炮攻擊範圍為上下左右各 2 格,即同行間隔 ≥3,且與前兩行無列衝突。求最大放炮數。 狀態壓縮
POJ 2777 區間染色:線段樹懶惰標記模板
問題描述 長度 L 的木板初始顏色 1。兩類操作: C a b c:將區間 [a,b] 染成顏色 c P a b:查詢區間 [a,b] 有多少種不同顏色 顏色數
HDOJ 2192 多重背包:二進制拆分優化模板
問題轉化 多重背包:每種物品有數量限制 nᵢ。核心優化——二進制拆分:將數量 n 拆為 1, 2, 4, ..., 2ᵏ, remainder,轉化為若干 0/
回溯算法解 0/1 背包問題:兩種實現範式詳解
問題描述 給定 n 件物品(重量 wᵢ、價值 vᵢ)與容量 C 的背包,每件物品只能選或不選(0/1),求最大總價值。回溯法構造狀態空間樹,每層決定第 i 件物
ZOJ 3469 Food Delivery:區間動態規劃經典模型
問題建模 外賣員從 x 軸上某點出發,速度 v,需送達 n 位顧客(位置 xᵢ、坑爹度 vᵢ)。顧客等待時間越長,坑爹度累積越高。求最小總坑爹度。 關鍵洞察:最
POJ 2653 Pick-up Sticks:計算幾何與暴力優化技巧
題目大意 給定 N 條按順序放置的線段(N ≤ 100,000),判斷最終位於最頂層(未被後來線段覆蓋)的線段編號。題目保證頂層線段不超過 1000 條。 核
C++ 類別中定義靜態常量的兩種最佳實踐
前言 在 C++ 類別設計中,定義不可變的常量值是常見需求。本文介紹兩種標準且高效的方法:枚舉常量與 static const 靜態成員常量,並解析其編譯期特性
POJ 1066 寶藏尋找:線段相交計數等價最短路
題目大意 100×100 正方形內有若干牆(線段),牆端點在邊界或內部,牆不相交。從邊界四門(邊界線段中點)進入,走到寶藏點,最少穿過幾道牆(門)。 幾何等價
POJ 3714 Raid / HDU 1007 Quoit Design:最近點對分治(含分類限制)
核心問題:平面最近點對 給定 n 點,找歐氏距離最小的點對。 經典分治 O(n log n) 或 O(n log² n) 算法。 分治框架(O(n log
POJ 3348 Cows:凸包面積計算(Graham Scan + 叉積面積)
題目大意 給定 n 個點,求其凸包面積除以 50 取整。輸入多組測資,n=0 結束。 演算法流程 Graham Scan 求凸包: 找最低點(
POJ 2112 Optimal Milking:二分圖多重匹配 + 二分答案 + Floyd
題目大意 K 奶牛,C 台擠奶機(每台容量 M),K+C 個節點構成圖,邊權為距離。 每奶牛需分配到一台機器,機器負載不超過 M。 最小化最大距離(即最遠的奶
C++ 編程思想精華:聲明與定義、句柄類模式
1. 聲明 vs 定義 概念作用關鍵字/語法 聲明向編譯器介紹名字存在、型別、參數`extern int i;` `void f(int);` `class