dp套dp(动态规划)
dp套dp
這是一個對于一類動態規劃的計數問題的處理方法,問題常常是如果形式確定就可以直接dp,但是現在卻要求滿足某個要求的所有方案數,一般的處理方法就是一維負責增量構造,其他維度用來表示內部dp狀態,然后轉移時候先讓內部狀態轉移,然后外部dp對應存儲方案數。
類似于將內部的dp轉移變成一個自動機,可以接受所有不同的轉移,然后我們的外層dp就是在自動機上進行計數。
P4590 [TJOI2018]游園會
給定一個長度為k的字符串,求解長度為n的字符串中LCS為i的個數,對所有的i輸出答案。
首先對于LCS的一般處理就是dp,但是這里我們需要處理不同的串,而不是單一的串的問題,所以我們使用dp套dp,然后對于內層狀態我們需要保存不同串下的對應dp狀態,那么可以發現利用差分可以得到一個長度為k的01串,那么我們可以將其視作是自動機的狀態,然后每次新增加一個字符就可以轉移,然后我們只需要在外層再套上一個dp來計數即可。
CF979E Kuro and Topological Parity
https://www.cnblogs.com/wmrv587/p/9051201.html
題意:
給定n個點,每個點有黑白兩種顏色(如果沒有顏色,那么你可以把它任意涂成黑色或白色),同時你可以在這個圖上任意加入一些邊(當然不能加入重邊或自環),要求:加入的邊必須從編號小的點指向編號大的點
我們稱一條好的路徑為經過的點為黑白相間的路徑,如果一個圖好的路徑的總數%2=p,那么我們稱這個圖為好的圖,現在給定你n個點的情況,求這n個點能組成的好的圖的個數,答案取模10^9+7
首先如果圖是一定的,那么我們可以輕易的進行dp得到答案,但是現在問題是圖不是一定的,所以我們就需要dp套dp解決,因為我們只關注路徑個數的奇偶性,所以狀態只需要保留終止點為黑色和白色的點數的奇偶性,因為其它點都是可連可不連的,然后只需要一個顏色不同有奇數個鏈的點存在,那么最后結果是奇數和偶數的方案都是2i?22^{i-2}2i?2,所以這樣我們就可以做到O(n)的復雜度了。
總結
以上是生活随笔為你收集整理的dp套dp(动态规划)的全部內容,希望文章能夠幫你解決所遇到的問題。