BZOJ 1005 prufer序列 分解質因數

2021-07-26 02:10:20 字數 1041 閱讀 5348

已知度數的節點可能的組合方式如下

(n-2)!/(d1-1)!/(d2-1)!/…/(dk-1)!/left!

乙個乙個編號去放,對於第乙個確定度數的編號可以有c(n-2,d1-1)種放法,第二個c(n-2-(d1-1),d2-1)。。。寫出來後發現可以約一些階乘。

剩餘left個位置由未知度數的節點隨意填補,方案數為m^left

於是最後有

ans=(n-2)!/(d1-1)!/(d2-1)!/…/(dk-1)!/left! * m^left

注意特判n=1和n=2的情況。

#include 

#include

#include

using

namespace

std;

const

int maxn = 1000;

int answ[maxn+10], prime[maxn+10], t[maxn*10+10], d[maxn+10];

bool notprime[maxn+10];

void getprime(int max)

}}void add(int u, int m)

}}int main()else

}t1 = n-2;

for(int i=1;i<=t1;i++)

add(i, 1);

if(n == 1)

if(n == 2)

if(flag)

t1 = n-2-sum;

for(int i=1;i<=t1;i++)

add(i, -1);

add(n-cnt, n-2-sum);

t[0] = t[1] = 1;

for(int i=1;i<=prime[0];i++)

while(t[t[0]] >= 10)}}

for(int i=t[0];i;i--)

printf("%d", t[i]);

printf("\n");

return

0;}

bzoj1005 prufer 明明的煩惱

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

BZOJ 1430 小猴打架 prufer編碼

prufer編碼和無根樹的轉化問題 樹化prufer 在葉子節點中尋找編號最小的節點,將與之相連的父節點加入prufer佇列裡,然後刪去該葉子節點,直至圖中只剩下2個節點,於是prufer數列共有n 2位 於是對於乙個完全圖求生成樹的個數,他的prufer序列裡有 n 2 位,每一位均可取1 n,於...

bzoj1211 樹的計數 prufer編碼

prufer編碼大概就是將一顆無根樹對應到乙個序列裡面,然後構造就是不斷找最小的度數為1的點然後將他的father加進去。不難發現每個編號的出現次數就是deg 1 includeusing namespace std const int n 300 typedef long long ll ll a...