LeetCode Search Insert Position:二分查找變體求插入位置
問題描述 給定升序無重複數組 nums 和目標值 target。若存在返索引,否則返回「按順序插入」的位置(即第一個 ≥ target 的元素索引,或數組長度)
LightOJ 1027 - A Dangerous Maze:期望時間數學推導與 GCD 化簡
問題模型 n 扇門,等概率選擇。第 i 扇門: 0:x_i 分鐘後出去 x_i < 0:|x_i| 分鐘後回到起點,記憶清零 求走出迷宮的期望時間,輸出既
LeetCode Medium 題集合 (六):字符串相乘、全排列
1. Multiply Strings — 大數乘法 兩非負整數字符串相乘,返回積字符串。模擬豎式乘法: 反轉兩字符串,低位在前 雙循環逐位相乘,結果累加到
Hihocoder 1170 機器人排序:狀態壓縮 DP 解決顏色分組最小交換次數
問題大意 N ≤ 15 個機器人排成一列,每個有顏色(≤16 種)。相鄰交換,求將同顏色機器人聚在一起的最小交換次數。 關鍵結論 相同顏色機器人相對順序不變(
Timus 1057 Amount of Degrees:數位 DP 求 B 進制下恰含 K 個 1 的數
問題轉化 求區間 [X, Y] 內有多少數可表示為 恰好 K 個不同的 B 的冪之和。即該數的 B 進制表示中恰有 K 個 1,其餘為 0(因為不同冪次對應不同
C++ sizeof 詳解:基礎類型、空類、內存對齊、虛函數表指針
sizeof 基本規則 編譯期運算符,返回類型或表達式的字節大小 不計算表達式值,僅推導類型 對數組參數退化為指針,sizeof(arr) 在函數內返回指針大
Codeforces 134C - Swaps:優先隊列模擬循環桌面交換
問題重述 n 人圍圓桌,第 i 人初始持有 s 張顏色 i 的卡片。規則: 只能給出自己顏色的卡片 不能接收已擁有的顏色(含自己顏色) 每次交換雙方各給一張、
UVA 10313 Pay the Price:硬幣找零組合數 DP(完全背包變體)
題目大意 有面值 1~300 的硬幣各無限枚。輸入三種模式查詢: n:組成金額 n 的方案數 n a:用不超過 a 枚硬幣組成 n 的方案數 n a b:用硬
POJ 2001 Shortest Prefixes:字典樹求最短唯一前綴
問題描述 給定若干字符串,對每個字符串找出其最短唯一前綴(即該前綴不作為其他任何字符串的前綴)。輸出格式:原字符串 最短前綴。 解法:Trie(字典樹)統計前
LightOJ 1287 - 期望逃脫時間:狀態壓縮 DP + 記憶化搜索
問題建模 無向圖 n ≤ 15 個節點,從 0 出發。每步: 在當前節點 u,找出所有「當選節點」EJ:移動到 v 後,仍能在不重複訪問節點的前提下遍歷所有安
Codeforces Beta Round #2 A - Winner:模擬與 Map 統計
題目大意 n 輪遊戲,每輪記錄玩家名字與得分(可負)。最終總分最高者獲勝;若並列最高,則最先達到該最高分者獲勝。 解題思路 第一遍掃描:用 map 累計每人
POJ 2838 Graph Connectivity:動態圖連通性的三種解法對比
問題描述 無向圖 G(V,E),初始無邊。支援三種操作(Q ≤ 20000,N ≤ 1000): I u v:插入邊 (u,v)(保證不存在) D u v:刪
HDU 2020 絕對值排序:Java 實現與自定義比較器
題目大意 輸入多組測試數據,每組第一個整數 n (≤100),後跟 n 個整數。按絕對值從大到小排序輸出。保證絕對值互不相同。n=0 結束輸入。 解法:自定義
Codeforces 359D - Pair of Numbers:最大公約數子段與雙指針優化
問題重述 給定長度 n 的正整數數組 a[1..n]。找出所有區間 [l, r] 使得: 區間內存在某個 j (l ≤ j ≤ r),使 a[l..r] 所有
C++ 四大類型轉換操作符深度解析:static_cast、const_cast、dynamic_cast、reinterpret_cast
為什麼需要 C++ 風格轉換? C 風格轉換 (Type)expr 功能過於強大且隱蔽,易導致意外轉換。C++ 提供四個專用轉換操作符,語意明確、編譯器可檢查、
UVA 1292 - 樹的最小頂點覆蓋:樹形 DP 經典解法
問題描述 給定一棵無根樹,選擇最少數量的節點,使得每條邊至少有一個端點被選中(即「覆蓋」所有邊)。求最小覆蓋節點數。 解題思路:樹形動態規劃 任選一節點為根(
C++11 列表初始化:統一初始化語法與窄化轉換檢查
什麼是列表初始化? C++11 引入列表初始化(brace initialization),使用花括號 {} 統一初始化語法,適用於所有類型:內置類型、標準庫容
LeetCode 合併兩個有序鏈表:遞歸與迭代雙解法
題目描述 將兩個升序鏈表合併為一個新的升序鏈表並返回。新鏈表由原兩鏈表的節點拼接而成(即不創建新節點,只調整指針)。 解題思路 遞歸法 比較兩鏈表頭節點值,較