bzoj1211 樹的計數 prufer編碼

2021-09-04 15:11:15 字數 553 閱讀 1752

prufer編碼大概就是將一顆無根樹對應到乙個序列裡面,然後構造就是不斷找最小的度數為1的點然後將他的father加進去。

不難發現每個編號的出現次數就是deg+1

#includeusing namespace std;

const int n=300;

typedef long long ll;

ll ans[n];

inline void modify(int p,int sum)

}}void calccomb(int a,int b)

int n;

int tot=0;

int main()

tot+=d;

if(d>1)calccomb(p,d-1);

p-=d-1;

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

ll ret=1;

for(int i=2;i<=150;i++)

}printf("%lld\n",ret);

}

BZOJ 1211 樹的計數

1.題目鏈結。這裡面細節挺多的,首先公式是 n 2 d1 1 d2 1 其中d是每個點的度數。至於怎麼得到的,是根據無根樹的prufer序得到的,不懂得可以自行學習,挺簡單的。就是一種把無根樹對映到唯一的乙個序列,有一種拓撲排序的思想,但是這個序列對於乙個確定的無根樹是唯一的,就像身份證號一樣。知道...

bzoj 1211 HNOI2004 樹的計數

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

BZOJ 1211 HNOI2004 樹的計數

今天早上由於剩下的非許可權題實在是太難了。於是學了一下新東西續命。直接prufer序列排列組合就好了。注意各種0的情況 code include include typedef long long ll const ll n 155 ll n ll a n ll pri n ll tot ll cn...