最值問題
網格圖路徑問題的分治做法
P3350 [ZJOI2016] 旅行者
注意到 \(nm\le 2\times 10^4\implies \min(n,m)\le \sqrt 2\times 10^2\)。
對於一個矩形,我們將其對半劃分為兩個矩形。
如果一條最短路路徑經過中間的“劃分線”,那麼我們可以直接列舉這條線上的所有點作為“劃分點”,以這個點為起點向整個矩陣作一個最短路,便可以得到當前的答案,因為要列舉,所以應該優先列舉短的邊。
接著對於兩邊遞迴處理。
複雜度 \(\mathcal O(mn\min(n,m)\log^2nm)\)。
例題:2024.10.1 T4,字串LCS
計數問題
屬性去重法
為了避免一個答案被計算多次,我們可以人為給每一個元素(方案)新增一個與眾不同的屬性,接著規定只選取滿足某種特性的那一個,以去重。
P1972 [SDOI2009] HH的項鍊
AGC013D Piling Up
帶容斥係數DP
僅容斥係數DP:即轉移的時候不講最後的答案算出而存為狀態,在最後才轉化為具體的值。
P4099 [HEOI2013] SAO
根據每條邊容斥(即取反)與不容斥(即直接忽視)進行DP轉移
dp of dp:
將DP的值設作另一個DP的答案,一般內層為一個最值DP,外層為一個計數DP,解決去到某個最值的方案數。
P8352 [SDOI/SXOI2022] 小 N 的獨立集
P4590 [TJOI2018] 遊園會
通用方法
動態狀態
一個轉移只用到很小的一部分狀態,則不斷重新整理狀態,使得其只與我需要的同階。
P3188 [HNOI2007] 夢幻島寶珠