Luogu4430 小猴打架

2022-05-11 04:08:15 字數 873 閱讀 6007

problem

一開始森林裡面有n只互不相識的小猴子,它們經常打架,但打架的雙方都必須不是好朋友。每次打完架後,打架的雙方以及它們的好朋友就會互相認識,成為好朋友。經過n-1次打架之後,整個森林的小猴都會成為好朋友。 現在的問題是,總共有多少種不同的打架過程。 比如當n=3時,就有六種不同的打架過程。

乙個整數n。

一行,方案數mod 9999991。

輸入樣例#1

4
輸出樣例#1

96
50%的資料n<=10^3。 100%的資料n<=10^6。

#include using namespace std;

typedef long long ll;

const ll mod=9999991;

int n;

ll ans=1;

int main()

???

題目等價於求乙個有\(n\)個節點的完全圖的生成樹的方案有多少個

兩個方案不同當且僅當生成樹中有至少一條邊不同,或者生成樹相同,而加邊的順序不同

前置知識:

cayley公式:對於乙個有\(n\)個節點的完全圖\(g\),它的生成樹個數有\(n^\)個

證明需要用到prufer編碼,其實matrix-tree定理也可以證明

下面是兩篇分別通過prufer編碼和matrix-tree定理證明cayley的部落格:

經典證明:prüfer編碼與cayley公式

題解 p4430 【小猴打架】

然後是這道題,對於每棵生成樹,有\((n-1)!\)種順序將邊加入生成樹中,所以還要乘上去

luogu4430 小猴打架

假碩講了個prufer編碼和caylay公式 我為了證明prufer編碼沒用 所以用矩陣樹定理證明了caylay公式 讓我們用矩陣樹定理推一波 首先這個小猴打架最後會打成一棵樹,這棵樹是n個點的完全圖的生成樹 所以用矩陣樹定理 構建矩陣 n個點的完全圖 這是我們的鄰接矩陣 begin0 1 1 cd...

洛谷 P4430 小猴打架

洛谷 p4430 小猴打架 一開始森林裡面有n只互不相識的小猴子,它們經常打架,但打架的雙方都必須不是好朋友。每次打完架後,打架的雙方以及它們的好朋友就會互相認識,成為好朋友。經過n 1次打架之後,整個森林的小猴都會成為好朋友。現在的問題是,總共有多少種不同的打架過程。比如當n 3時,就有六種不同的...

P4430 小猴打架 P4981 父子

當然你也可以理解為 cayley 公式,其實這個公式就是prufer編碼經過一步就能推出的 p4430 小猴打架 p4981 父子 這倆題差不多 先說父子,很顯然題目就是讓你求 n 個點的有根樹有幾條 n 個點的無根樹的 prufer 編碼有 n 2 位,且編碼和樹一一對應並且每一位可以重複 那麼就...