1. 程式人生 > 其它 >題解 P2767 樹的數量

題解 P2767 樹的數量

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\) 的條件下可過.

程式碼就不給了,感覺很好寫。