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...