BZOJ 1211 HNOI2004 樹的計數

2021-08-13 06:15:49 字數 732 閱讀 6121

今天早上由於剩下的非許可權題實在是太難了。。

於是學了一下新東西續命。。

直接prufer序列排列組合就好了。。

注意各種0的情況

code:

#include

#include

typedef

long

long ll;

const ll n=155;

ll n;

ll a[n];

ll pri[n];

ll tot;

ll cnt[n];

bool ok[n];//這個是不是

void get_pri()

}}void add (ll x,ll y)

}}ll get (ll x,ll y)

int main()

get(n-2,1);

ll sum=0;

for (ll u=1;u<=n;u++)

sum=sum+a[u];

get(a[u]-1,-1);

}if (sum!=(n-1)*2)

ll ans=1;

for (ll u=1;u<=tot;u++)

for (ll i=1;i<=cnt[u];i++)

ans=ans*pri[u];

printf("%lld\n",ans);

return

0;}

bzoj 1211 HNOI2004 樹的計數

題意 給出每個節點的度數,問有多少棵樹滿足這些度數。題解 pr fer序列 組合數學 pr fer序列是由標號樹產生的唯一數列。生成方法 一棵樹要得到普呂弗序列,方法是逐次去掉樹的頂點,直到剩下兩個頂點。考慮樹t,其頂點為。在第i步,去掉標號最小的葉,並把普呂弗序列的第i項設為這葉的鄰頂點的標號。序...

bzoj1211 HNOI2004 樹的計數

題目傳送門 解法 prufer數列。有這麼三個性質 乙個prufer數列與乙個無根樹一一對應。乙個n個節點的無根樹的prufer數列長度為n 2。乙個點的度數等於他在prufer數列裡面出現的次數 1。第三個性質這樣證明 首先需要了解prufer序列如何構造 看這裡在prufer數列中,如果乙個點出...

bzoj1211 HNOI2004 樹的計數

題目鏈結 乙個有n個結點的樹,設它的結點分別為v1,v2,vn,已知第i個結點vi的度數為di,問滿足這樣的條件的不同的樹有多少棵。給定n,d1,d2,dn,程式設計需要輸出滿足d vi di的樹的個數。prufer序列,明明的煩惱簡化版。bzoj1211 include include inclu...