原创 基礎數學問題選講

對應luogu題單 1. [luoguP2822] [NOIP2016提高組] 組合數問題 2. [luoguP2789] 直線交點數 3. [luoguP2638] 安全系統 4. [luoguP1835] 素數密度 5. [luoguP

原创 淺談折半搜索

折半搜索(又稱meet in the middle),顧名思義,就是將原有的數據分成兩部分分別進行搜索,最後在中間合併的算法。 設對\(n\)的大小進行搜索所需要的時間複雜度爲\(O(f(n))\),合併時間複雜度爲\(O(g(n))\),

原创 NOIP PJ/CSP-J 題目選做

1. luoguP7074 [CSP-J2020] 方格取數 2. luoguP5662 [CSP-J2019] 紀念品 3. luoguP2671 [NOIP2015 普及組] 求和 4. luoguP5663 [CSP-J2019] 加

原创 基 礎 樹 上 問 題

即luogu題單【圖論2-1】基礎樹上問題 這份題單難度還是非常大的。所以這裏就是對題單中10道題的簡單講解。 之後會再發一篇NOIP TG/CSP-S中樹論題目的講解,那篇的難度可能還會再大一些(咕咕咕 感謝luogu題解和《算法競賽進階

原创 前綴函數與Z函數

字符串算法果然玄學=_= 參考資料: OI Wiki:前綴函數與KMP算法 OI Wiki:Z函數(擴展KMP) 0. 約定 字符串的下標從\(0\)開始。 對於長度爲 \(n\) 的字符串 \(s\),記其每一個字符分別爲 \(s[0],

原创 簡單圖論樹論

1.圖的存儲與遍歷 2.最小生成樹 3.最短路 4.負環與差分約束 5.倍增LCA 6.Tarjan縮點

原创 輕重鏈剖分

樹上的許多問題都可以用dfs序+線段樹予以解決。 輕重鏈剖分是通過優化dfs的順序,達到優化時間複雜度的目的。 它可以\(O(n\log^2n)\)支持鏈上加,鏈上和還有\(O(n\log n)\)LCA,子樹加,子樹和。 前置知識:dfs

原创 字符串算法彙總

字符串算法都好難啊…… 1. 字符串哈希 2. KMP 3. manacher 4. Trie樹 5. 最小表示法 6. Z函數(exKMP) 7. AC自動機 8. 子序列自動機 9. 後綴數組 10. 後綴自動機 11. 迴文自動機

原创 [UVA11987] Almost Union-Find

UVA11987(vjudge) 並查集神題。也是在這裏頭一次聽說了並查集的刪除操作。 題目大意: 要求支持3個操作: 合併\(x,y\)所在集合; 將\(x\)移到\(y\)所在集合; 查詢\(x\)所在集合中元素的個數和元素的和。

原创 簡單數據結構模板彙總

不包括字符串和圖論內容。 某種意義上算是“簡單”數據結構…… 代碼壓行警告qwq 如果存在與數據結構有關的經典算法,也會予以列出。 1. 單調隊列 const int maxn=1000010; int n,k,cnt,a[maxn],mi

原创 狄利克雷卷積與莫比烏斯反演(應用篇)

這個可能還會咕一會兒

原创 數學整理(理論篇)

後續:數學整理(代碼篇) 當然有的證明因爲水平所限不是那麼的嚴謹…… 編號不一定與代碼篇中的一致。 1. 快速冪 遞歸實現原理: 當\(b\)爲偶數時,\(a^b=(a^{b/2})^2\) 當\(b\)爲奇數時,\(a^b=(a^{\lf

原创 dp學習(二)

樹和圖上的dp。 4. 簡單樹形dp 5. 樹上揹包 6. 二次掃描法(換根dp) 7. DAG上的dp 8. 基環樹上的dp 9. 後效性處理

原创 dp學習(六)

高級科技。 26. 虛樹 27. 長鏈剖分 28. 插頭dp