1. 程式人生 > >P5303 [GXOI/GZOI2019]逼死強迫癥

P5303 [GXOI/GZOI2019]逼死強迫癥

pla img 斐波那契數列 inf 不同 長度 clas 圖形 9.png

題目地址:P5303 [GXOI/GZOI2019]逼死強迫癥

這裏是官方題解

初步分析

從題目和數據範圍很容易看出來這是一個遞推 + 矩陣快速冪,那麽主要問題在於遞推的過程。

滿足條件的答案一定是以下的形式,設 \(k = n - 1\) ,左右兩邊為整齊的道路,中間為長度 \(p(p \geq 3)\) 的組合塊:

技術分享圖片

\(p\) 的奇偶性,可以得到兩種不同的基本圖形,即 \(1 \times 1\) 的小塊在同一行( \(p\) 是偶數)和各占一行( \(p\) 是奇數)。

數學方法

左右均為普通的鋪地板問題,可以用斐波那契數列表示,通過上下翻轉可以得到兩種不同的中間塊方案,於是答案可以表示為:

\[F_k = 2 \sum_{p=3}^{n}\ \sum_{m=p}^{n}\ f_{k-m}\ f_{m-p+1}\]

轉化為母函數可得:

\[\sum_{k=0}^{\infty}\ x^n\ F_k = \frac{2x^3}{(1-x)(1-x-x^2)^2}\]

DP方法

思考如何構造方案,在 \(p = 3\) 時,有兩個無法分割的排列 :技術分享圖片技術分享圖片,其余方案可以通過在中心塊一
側加入一個豎向的 \(1 \times 2\) 地磚或者兩個橫向的 \(1 \times 2\) 地磚組成的方形獲得。答案就是上述方案的所有排列數之和。

問題轉化

為了更好的求解問題,將所有?案放在?棵樹上,稱之為“?案樹”,? T 表?。具體??,在樹上 level q

的每個節點放? q 個配置,這些配置可以把?案拆解為 q 塊可以循環排列的結構。?這種?法,每個節點的
level 數就代表該層節點的整體重復次數。那麽我們的?的就是構造這樣?棵樹,然後求每個節點到達根節點
的距離和。

技術分享圖片

P5303 [GXOI/GZOI2019]逼死強迫癥