luogu4430 小猴打架

2022-05-27 16:45:11 字數 1597 閱讀 5940

假碩講了個prufer編碼和caylay公式

我為了證明prufer編碼沒用

所以用矩陣樹定理證明了caylay公式

讓我們用矩陣樹定理推一波

首先這個小猴打架最後會打成一棵樹,這棵樹是n個點的完全圖的生成樹

所以用矩陣樹定理

構建矩陣(n個點的完全圖)

這是我們的鄰接矩陣

\(\begin0&1&1&\cdots&1\\1&0&1&\cdots&1\\1&1&0&\cdots&1\\\vdots&\vdots&\vdots&\ddots&\vdots\\1&1&1&\cdots&0\end\)

然後是我們的度數矩陣

\(\beginn-1&0&0&\cdots&0\\0&n-1&0&\cdots&0\\0&0&n-1&\cdots&0\\\vdots&\vdots&\vdots&\ddots&\vdots\\0&0&0&\cdots&n-1\end\)

所以說我們的基爾霍夫矩陣是n*n的下面矩陣:

\(\beginn-1&-1&-1&\cdots&-1\\-1&n-1&-1&\cdots&-1\\-1&-1&n-1&\cdots&-1\\\vdots&\vdots&\vdots&\ddots&\vdots\\-1&-1&-1&\cdots&n-1\end\)

然後我們開始大力跑代數余子式

劃掉第n行第n列的元素得到乙個(n-1)*(n-1)的矩陣:

\(\beginn-1&-1&-1&\cdots&-1\\-1&n-1&-1&\cdots&-1\\-1&-1&n-1&\cdots&-1\\\vdots&\vdots&\vdots&\ddots&\vdots\\-1&-1&-1&\cdots&n-1\end\)

注意這個矩陣是(n-1)*(n-1)的

然後對這個矩陣進行各種初等變換(初等亂搞)(以下方法參考《線性代數》)

我們先讓第一行成為所有(n-1)行的和(初等變換第三條)

\(\begin1&1&1&\cdots&1\\-1&n-1&-1&\cdots&-1\\-1&-1&n-1&\cdots&-1\\\vdots&\vdots&\vdots&\ddots&\vdots\\-1&-1&-1&\cdots&n-1\end\)

然後讓第2~(n-1)行都加上第一行(初等變換第三條)

\(\begin1&1&1&\cdots&1\\0&n&0&\cdots&0\\0&0&n&\cdots&0\\\vdots&\vdots&\vdots&\ddots&\vdots\\0&0&0&\cdots&n\end\)

消成了上三角矩陣(美滋滋)

所以行列式就是對角線元素相乘,有1個1,(n-2)個n

所以生成樹個數為\(n^\)

然後考慮生成樹的每一條邊

小猴打架可以按照任意的順序

所以每一種生成樹的產生順序就是他的邊的排列個數,

有\((n-1)\)條邊所以排列為\((n-1)!\)

所以最後答案是\(n^(n-1)!\)

#include using namespace std;

#define p 9999991

long long n, ans = 1;

int main()

讓我們一起膜拜大佬林瑞堂@olinr

Luogu4430 小猴打架

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

洛谷 P4430 小猴打架

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

P4430 小猴打架 P4981 父子

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