【矩陣樹定理+線代基礎】HDU6420 Rikka with Spanning Tree
阿新 • • 發佈:2019-01-05
【前言】
當初多校的時候寫了這題,後面改了兩天愣是沒過,於是坑了。
今天wyl在寫矩陣樹,突然想起來有這題,於是就過了。
【題目】
原題地址
給定一個長度為
的序列
,定義
為
的字首和。現在有一幅
個點的圖,其中編號在
之間的點兩兩有連邊。除此之外還有
條邊,求這幅圖的生成樹個數。
【解題思路】
一道需要一定線代基礎的矩陣樹定理題。
生成樹個數我們肯定是考慮矩陣樹定理的。由於塊間連邊只有 條,而塊個數也只有 個,我們可以考慮只保留每個塊的點以及那些有塊間連邊的點,然後矩陣樹一波。於是我們先把這個行列式的形式寫出來然後觀察一下我們怎麼能縮小這個行列式。
下面我們稱與塊外有連邊的點為“關鍵點”,僅在塊內連邊的點為“自閉點”。
那麼行列式大概是長這個樣子的,其中
表示第
個塊內部連邊,
的位置可能實際上有一些
.
那麼我們對於每個塊的兩行,交換這兩行不會影響到其他塊,我們就可以對每個塊的形態進行考慮(以下設
為塊內點數,
為關鍵點數,
為自閉點個數,顯然
)
首先我們將所有點重標號,將關鍵點放到前面:
嗯,左上角一塊我們暫時不用管它,反正最終我們是可以計算出來的。
發現自閉點一側的行列式形式高度統一,於是我們讓所有行都減去第
行的數,行列式值不變: