P4981-父子【数学,树】
生活随笔
收集整理的這篇文章主要介紹了
P4981-父子【数学,树】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
正題
題目鏈接:https://www.luogu.org/problemnew/show/P4981
題目大意
求nnn個點的有根樹個數。
解題思路
根據CayleyCayleyCayley定理nnn個點的有根樹個數是nn?1n^{n-1}nn?1
證明:
先證明標號樹枝的個數
先是nnn個沒有邊的點,加入了kkk條邊后剩下的可以加邊的個數為n(k?1)n(k-1)n(k?1)
(從任意一個點為根,然后要連接不是這個點所在樹枝的根)
然后答案就應該是
∏i=1n?1n(n?i)=nn?1(n?1)!\prod_{i=1}^{n-1}n(n-i)=n^{n-1}(n-1)!i=1∏n?1?n(n?i)=nn?1(n?1)!
然后不標號的話就是nn?2n^{n-2}nn?2
推導得
這道題對應第1種情況
codecodecode
#include<cstdio> #define ll long long using namespace std; ll n,m,p=1e9+9,t; ll qsm(ll x,ll c) {x%=p;ll ans=1;while (c){if (c&1) ans=ans*x%p;x=x*x%p;c>>=1;}return ans;} int main() {scanf("%lld",&t);while(t--){scanf("%lld",&n);printf("%lld\n",qsm(n,n-1));} }總結
以上是生活随笔為你收集整理的P4981-父子【数学,树】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P4945-最后的战役【dp,离散化】
- 下一篇: 男生伤感签名大全