假碩講了個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 位,且編碼和樹一一對應並且每一位可以重複 那麼就...