HNOI2008 明明的煩惱

2021-10-10 16:12:53 字數 1083 閱讀 7158

如果按照樹形態dp,是不可做的。

我們直接按照prufer序列組合數求即可。看成乙個 n-2 長度的序列。

對於固定的度,相當於盒子中放球,然後剩下的未定的,相當於從剩下位置中隨便放。

因為要高精度,所以用的py

ac**:

fac=[1

]*(1010

)def

c(n,m)

:return fac[n]

//fac[m]

//fac[n-m]

defmain()

: n=

int(

input()

) a=[1

]*(n+10

) fac[0]

=1for i in

range(1

,n+3):

fac[i]

=fac[i-1]

*i cnt=

0 res=

1 now=

0for i in

range(0

,n):

a[i]

=int

(input()

)if a[i]==-

1:cnt+=

1if a[i]

>=n:

print(0

)return

;if a[i]

>1:

now+=a[i]-1

if now>=

(n-1):

print(0

)return

; res=

int(

pow(cnt,n-

2-now)

) now=n-

2for i in

range(0

,n):

if a[i]

>1:

res*=

int(c(now,a[i]-1

))now-=

(a[i]-1

)print

(int

(res)

)main(

)

HNOI2008 明明的煩惱

傳送門 這題的弱化版 prufer 序列題。我們先考慮度數確定的點,記度數確定的點有 k 個,它們在 prufer 序列中一共出現 cnt 次。首先我們要從 prufer 序列的 n 2 個位置中選 cnt 個來放這些點,然後我們考慮 先不確定其它 n k 個點的位置,此時方案數為 frac 那麼剩...

洛谷P2624 HNOI2008 明明的煩惱

題目描述 題解 來補一補 purfer text purfer 序。可以考慮每次選擇編號最小的葉子,然後刪掉並且在序列中新增加與它連邊的節點。這樣會得到乙個長度為 n 2 n 2n 2 的序列。考慮如何將乙個 n 2 n 2n 2 的序列變成一棵樹。首先我們可以得到每個點的度為序列 現次數 1 1 ...

HNOI2008 玩具裝箱

p教授要去看奧運,但是他捨不下他的玩具,於是他決定把所有的玩具運到北京。他使用自己的壓縮器進行壓 縮,其可以將任意物品變成一堆,再放到一種特殊的一維容器中。p教授有編號為1.n的n件玩具,第i件玩具經過 壓縮後變成一維長度為ci.為了方便整理,p教授要求在乙個一維容器中的玩具編號是連續的。同時如果乙...