BZOJ 1005 明明的煩惱

2022-05-02 04:03:10 字數 1010 閱讀 7178

標籤: 組合數 prufer序列

題目鏈結

給出一棵樹上某些點的度數(-1 就是不限制度數)

求有多少種不同的樹的個數

要做這道題首先得知道prufer序列。

每乙個這樣的序列都對應著一棵樹。

同時每個點的度數減1 就是prufer序列上這個點的出現次數。

然後用組合數搞一搞就行了。

這題要用高精度。

#include#include#include#include#include#include#include#include#include#includeusing namespace std;

#define ll long long

#define rep(i,a,b) for(int i=(a),_end_=(b);i<=_end_;i++)

#define drep(i,a,b) for(int i=(a),_end_=(b);i>=_end_;i--)

#define erep(i,a) for(int i=start[(a)];i;i=e[i].next)

inline int read()

const int maxn=1e3+20;

int n,a[maxn],sum,num;

int prime[maxn],cnt,mark[maxn];

void prepare() }}

int s[maxn];

void fj(int x,int add)

if(x>1)s[mark[x]]+=add;

}void init()

fj(num,n-2-sum);

}int cj[maxn*10],len=1;

void doing()

len+=4;

rep(l,1,len)

while(!cj[len])len--;

}} }

drep(i,len,1)cout<}int main()

bzoj1005 prufer 明明的煩惱

1005 hnoi2008 明明的煩惱 time limit 1 sec memory limit 162 mb submit 6358 solved 2471 submit status discuss description 自從明明學了樹的結構,就對奇怪的樹產生了興趣 給出標號為1到n的點,以...

bzoj1005 hnoi2008 明明的煩惱

time limit 1 sec memory limit 162 mb submit 3157 solved 1262 submit status discuss 自從明明學了樹的結構,就對奇怪的樹產生了興趣.給出標號為1到n的點,以及某些點最終的度數,允許在任意兩點間連線,可產生多少棵度數滿足要...

BZOJ 1005 HNOI2008 明明的煩惱

給定一棵n個節點的樹的節點的度數,其中一些度數無限制,求可以生成多少種樹。用到了prufer數列的知識。度娘 prufer數列 是由有乙個對於頂點標過號的樹 標號樹 轉化來的數列,點數為n的樹轉化來的prufer數列長度為n 2。由heinz prufer於1918年在證明cayley定理時首次提出...