HNOI2004 樹的計數

2022-05-02 01:51:11 字數 926 閱讀 8155

傳送門

\(prufer\) 序列入門題。。。

首先特判掉 \(n = 1\) 的情況:度數為 \(0\) 則有唯一解,否則無解。

然後特判掉總度數不為 \(2(n - 1)\) 的情況:無解。

再特判一下出現度數為 \(0\) 的點,也就是樹不連通的情況。

特判掉這些之後,就可以直接套公式了。。。

\[ans = \frac ^ n(d_i - 1)!}

\]如果不想用組合數來簡化式子的話就直接 rush 高精吧

#include #include using namespace std;

int n, d[233];

struct biginteger

biginteger clean()

biginteger operator = (int x)

biginteger operator * (const int& x)

biginteger operator / (const int& x)

return this -> clean();

}void output()

} ans;

int main()

if (sum != 2 * n - 2)

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

if (d[i] == 0)

ans = 1;

for (int i = 1; i <= n - 2; ++i) ans = ans * i;

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

for (int j = 1; j <= d[i] - 1; ++j) ans = ans / j;

ans.output();

return 0;

}

HNOI2004 樹的計數

hnoi2004 樹的計數 這道題資料水的一匹我無話可說,謎之錯誤 陣列賦值的時候乙個下標寫錯了變數 居然只wa了一組。寫這道題關鍵需要知道prufer序列以及cayley定理。prufer數列,可以用來解一些關於無根樹計數的問題。prufer數列是一種無根樹的編碼表示,對於一棵n個節點帶編號的無根...

HNOI 2004 樹的計數 題解

題目傳送門 題目大意 有一棵由 n nn 個點組成的樹,其中 d i d i d i 表示第 i ii 個點的度為 d i d i d i 問有多少棵滿足要求的樹。c ay le ycayley cayley 公式的一種應用。如果不會請點這裡 套乙個高精度板子即可,但是還要判無解的情況。直接上 in...

Hnoi2004 金屬包裹

傳送門 三維凸包模板題 只是聽了聽計算幾何的課之後心血來潮想寫的 我的做法很無腦是吧 暴力列舉三個點組成的三角形,然後列舉剩下的點,判斷其餘點是否都在這個三角形的同一側,是的話則說明這個三角形是凸包的乙個面。理論複雜度應該是 o n 4 不過看上去跑得飛快?人帥自帶小常數哈哈 這個故事告訴我們 大力...