POJ 2524:Ubiquitous Religions - 並查集統計集合數
問題描述 n ≤ 50000 名學生,m 對「信仰相同」關係。每人至多屬於一個宗教。求可能的最大宗教數(即連通分量數)。 並查集解法 初始每個學生自成一集。
UVA 11468:AC 自動機 + DP - 避開模式串的概率
問題描述 給定 k 個模式串(病毒特徵),隨機生成長度 L 的字符串,每位字符獨立按概率分布選取。求生成串不包含任何模式串的概率。 核心思路:AC 自動機 +
HDU 1517 乘法遊戲:斯坦與奧利的博弈策略分析
HDU 1517「乘法遊戲」是一道經典的博弈論問題,兩位玩家輪流將當前數值乘以 2 到 9 之間的整數,先使結果 ≥ n 者獲勝。本文深入分析必勝/必敗態的數學
POJ 1159:Palindrome - 最少插入構造回文 (DP + 滾動數組)
問題描述 給定長度 N ≤ 5000 的字符串,求最少插入幾個字符使其成為回文串。等價於:N - LCS(s, reverse(s)),即最長公共子序列 (LC
POJ 3254:Corn Fields - 狀態壓縮 DP 入門
問題描述 在 n × m 的網格中放牧,某些格子不可用。要求:同行相鄰格子不能同時放牧;上下相鄰行的同列也不能同時放牧。求合法放牧方案數模 10^9。 狀態壓
HDU 2896:病毒檢測 - AC 自動機多模式匹配
問題描述 給定 n 個病毒特徵串(關鍵詞),再給 m 個網頁內容串。對每個網頁,輸出出現過的病毒編號(按升序),最後輸出總共檢測到病毒的網頁數。字符集為可見 A
HDOJ 1048:The Hardest Problem Ever - 凱撒密碼解碼
題目描述 輸入包含多組數據,每組以 START 開始,END 結束,整個輸入以 ENDOFINPUT 結束。在 START 和 END 之間的一行為密文,所有大
HDOJ 1040:As Easy As A+B - 簡單排序輸出格式控制
題目描述 多組測試數據,每組給出 n 個整數,升序排序後輸出。要求:每行數字間單空格分隔,行末無多餘空格,每行結尾換行。 代碼實現 x; s
LeetCode 66:加一 - 數組模擬大整數加法
題目描述 給定非負整數的數組表示(最高位在前),對該整數加一,返回結果數組。 示例:[1,2,3] → [1,2,4],[9,9] → [1,0,0]。 解題
POJ 2752:Seek the Name, Seek the Fame - KMP Next 數組應用
問題描述 給定字符串 S(長度 ≤ 400,000),求所有既是前綴又是後綴的子串長度(包含整個串),按遞增順序輸出。 核心思路:KMP 失配函數 KMP 的
UVA 11695:Flight Planning - 修改一條邊使樹直徑最小
問題描述 給定一棵 n ≤ 2500 節點的樹。允許刪除一條邊並添加一條新邊(保持為樹),使新樹的直徑最小。輸出最小直徑、被刪除的邊、新增的邊。 核心觀察
UVA 11346:Probability - 幾何概率與積分求解
問題描述 點 L(X, Y) 在矩形 [-a, a] × [-b, b] 中均勻隨機選取。求由原點與 L S 的概率。 即求 S),其中 X ∈ [-a, a
HDU 4738:曹操的橋 - 求最小割橋 (Tarjan 算法)
問題描述 給定無向圖(島嶼與橋),每座橋有守衛數 W。周瑜僅能炸毀一座橋,且派出的士兵數必須 ≥ 該橋守衛數。求使圖不連通所需的最小士兵數。若原圖不連通輸出 0
NYIST 116:士兵殺敵(二) - 樹狀數組 (Fenwick Tree) 入門
題目描述 有 N 名士兵,初始殺敵數已知。支持兩種操作: 查詢 Q m n:輸出第 m 到第 n 號士兵的殺敵總和。 更新 U i q:第 i 號士兵新增 q
ZOJ 3713:In 7 - 字符串編碼與長度壓縮
題目大意 給定字符串,先輸出其長度 len 的特殊編碼:將 len 轉二進制,每 7 位一組,低位在前;若有更高位,在該組最高位置 1(即加 128),最後一組
HDOJ 1663:The Counting Problem - 數位 DP 與打表法詳解
問題描述 給定區間 [a, b] (0 < a, b < 10^8),統計寫出所有整數時,每個數字 0-9 出現的總次數。最多 500 組查詢。
LeetCode 82:刪除排序鏈表中的重複元素 II
題目描述 給定一個已排序的鏈表,刪除所有出現重複的節點,僅保留原始鏈表中出現一次的數字。 示例: 輸入:1→2→3→3→4→4→5,輸出:1→2→5 輸入:1
Codeforces 167B:巫師與巨大獎品 - 概率動態規劃詳解
題目大意 有 n 個對手,至少需擊敗 l 個。初始背包容量為 k。每個對手有獲勝機率 p[i],擊敗後:若 a[i] = -1 獲得一枚金幣(佔用 1 容量);