題解 P2767 樹的數量
阿新 • • 發佈:2021-10-11
I wanna AK CSP-S!
這道題算是一道思維量算是很大的題目。
第一反應數數題,發現怎麼也推不出來柿子。
突然想起有一些數數題可以用 dp 做。
於是往 dp 上想。
有一個顯然的狀態
\(f_{i,j,k}\) 表示 \(i\) 個點 \(j\) 叉且根連了 \(k\) 叉的有多少種方案。但是這個方案仔細想想不是很好轉移,因為有一個幾乎半費的狀態 \(j\) ,這個 \(j\) 是可以被 \(k\)完全覆蓋掉的。
那麼我們考慮優化一下這個狀態。
\(f_{i,j}\) 示 \(i\) 個點的 \(m\) 叉樹根節點連了 \(j\) 叉有多少種方案。
最後為什麼就決定是這個方案呢?因為這個狀態很簡潔,沒有什麼廢話,同時也可以很詳細的表示出所有資訊。因此這個狀態是很有可能成功的。
有了狀態之後,我們考慮這個轉移方程。
我們列舉一個 \(k\) 讓後從對 \(f_{i-k,j-1} \times f_{k,m}\) 求和來更新 \(f_{i,j}\) 。
複雜度 \(O(n^3)\) 在 \(n\le 127\) 的條件下可過.
程式碼就不給了,感覺很好寫。