記憶化搜尋:
-
記憶化
-
壓縮 DP 狀態(一些期望 dp 裡會用)
-
剪枝
遞推:保證前面的部分已經計算了
數位 dp
求 \([l,r]\) 之內滿足某種限制的數的個數,該限制應該是與數位有關係的。
帶不帶前導0取決於是否對統計答案造成影響。
字首和轉化:只有上界
- 補充題:如果 lim=1 的時候前面都是與 r 相同的,這個時候是可以列舉轉移的,如果 lim=0,那麼我們知道前面已經確定的位數,就知道還有多少數可用,可以不確定出具體是什麼數,只要乘上係數就可以了。
狀壓 dp
- 子集個數定理:對於 \(T\subseteq S\subseteq \{1,2,\dots,n\}\) ,不同的 \((S,T)\) 有 \(3^n\) 個
-
列舉子集:
先減 1,去掉最後一個 1,然後再把後面賦值成與 i 後面相同的
-
更加優秀的做法:一次加入一個元素,設 \(f[S]\) 是加入了 \(S\) 之後的最優情況,定義為 \((min\_group\_count,current\_rest\_V)\) ,在加入一個新的元素時,優先比較最小組數,然後比較當前最後一組剩餘大小。
-
那個題可以卡過去,不過還是能夠繼續最佳化:我們可以一一確定每個格子,考慮到當前狀態只有最靠下面的輪廓是有效的,狀壓這個輪廓線即可轉移。
-
DP 套 DP:要儲存最長公共子序列的情況,我們可以儲存計算LCS的DP陣列,注意到該陣列差分為0/1,可以狀壓。
機率 dp
-
由於只求 k,在第一個人開槍之後可以看成重新編號了,我們知道這種迴圈的機率,這樣計算可以直接計算出數列的極限。我們設 f[n][k] 表示 n 個人,要求編號為 k 的活著的機率。這裡有環(基環樹、樹等也可能使用,參見隨機遊走),考慮設一個主元,然後用該主元表示其他元。
-
可以使用無窮級數求和證明
證法2:令該期望為 \(x\) ,則有 \(x=p\times x+(1-p)\times(1+x)\) ,解得 \(x=1/p\) 。